group_theory.subgroup.basicMathlib.GroupTheory.Subgroup.Basic

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
@@ -1580,41 +1580,42 @@ normalizer_eq_top.mp (hmax.2 _ (hnc H (lt_top_iff_ne_top.mpr hmax.1)))
 end normalizer
 
 section centralizer
+variables {H}
 
 /-- The `centralizer` of `H` is the subgroup of `g : G` commuting with every `h : H`. -/
 @[to_additive "The `centralizer` of `H` is the additive subgroup of `g : G` commuting with
 every `h : H`."]
-def centralizer : subgroup G :=
-{ carrier := set.centralizer H,
+def centralizer (s : set G) : subgroup G :=
+{ carrier := set.centralizer s,
   inv_mem' := λ g, set.inv_mem_centralizer,
-  .. submonoid.centralizer ↑H }
-
-variables {H}
+  .. submonoid.centralizer s }
 
-@[to_additive] lemma mem_centralizer_iff {g : G} : g ∈ H.centralizer ↔ ∀ h ∈ H, h * g = g * h :=
+@[to_additive] lemma mem_centralizer_iff {g : G} {s : set G} :
+  g ∈ centralizer s ↔ ∀ h ∈ s, h * g = g * h :=
 iff.rfl
 
-@[to_additive] lemma mem_centralizer_iff_commutator_eq_one {g : G} :
-  g ∈ H.centralizer ↔ ∀ h ∈ H, h * g * h⁻¹ * g⁻¹ = 1 :=
+@[to_additive] lemma mem_centralizer_iff_commutator_eq_one {g : G} {s : set G} :
+  g ∈ centralizer s ↔ ∀ h ∈ s, h * g * h⁻¹ * g⁻¹ = 1 :=
 by simp only [mem_centralizer_iff, mul_inv_eq_iff_eq_mul, one_mul]
 
-@[to_additive] lemma centralizer_top : centralizer ⊤ = center G :=
+@[to_additive] lemma centralizer_univ : centralizer set.univ = center G :=
 set_like.ext' (set.centralizer_univ G)
 
-@[to_additive] lemma le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
+@[to_additive] lemma le_centralizer_iff : H ≤ centralizer K ↔ K ≤ centralizer H :=
 ⟨λ h x hx y hy, (h hy x hx).symm, λ h x hx y hy, (h hy x hx).symm⟩
 
 @[to_additive] lemma center_le_centralizer (s) : center G ≤ centralizer s :=
 set.center_subset_centralizer s
 
-@[to_additive] lemma centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
+@[to_additive] lemma centralizer_le {s t : set G} (h : s ⊆ t) : centralizer t ≤ centralizer s :=
 submonoid.centralizer_le h
 
-@[simp, to_additive] lemma centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
+@[simp, to_additive] lemma centralizer_eq_top_iff_subset {s : set G} :
+  centralizer s = ⊤ ↔ s ⊆ center G :=
 set_like.ext'_iff.trans set.centralizer_eq_top_iff_subset
 
 @[to_additive] instance subgroup.centralizer.characteristic [hH : H.characteristic] :
-  H.centralizer.characteristic :=
+  (centralizer (H : set G)).characteristic :=
 begin
   refine subgroup.characteristic_iff_comap_le.mpr (λ ϕ g hg h hh, ϕ.injective _),
   rw [map_mul, map_mul],
@@ -1663,10 +1664,10 @@ end⟩⟩
   (H.subgroup_of K).is_commutative :=
 H.comap_injective_is_commutative subtype.coe_injective
 
-@[to_additive] lemma le_centralizer_iff_is_commutative : K ≤ K.centralizer ↔ K.is_commutative :=
+@[to_additive] lemma le_centralizer_iff_is_commutative : K ≤ centralizer K ↔ K.is_commutative :=
 ⟨λ h, ⟨⟨λ x y, subtype.ext (h y.2 x x.2)⟩⟩, λ h x hx y hy, congr_arg coe (h.1.1 ⟨y, hy⟩ ⟨x, hx⟩)⟩
 
-@[to_additive] lemma le_centralizer [h : H.is_commutative] : H ≤ H.centralizer :=
+@[to_additive] lemma le_centralizer [h : H.is_commutative] : H ≤ centralizer H :=
 le_centralizer_iff_is_commutative.mpr h
 
 end subgroup

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

feat(group_theory): simple lemmas for Wedderburn (#18862)

These lemmas are a bit disparate, but they are all useful for Wedderburn's little theorem.

Co-authored-by: Eric Rodriguez <37984851+ericrbg@users.noreply.github.com>

Diff
@@ -2676,6 +2676,16 @@ begin
   exact subset_normal_closure (set.mem_singleton _),
 end
 
+variables {M : Type*} [monoid M]
+
+lemma eq_of_left_mem_center {g h : M} (H : is_conj g h) (Hg : g ∈ set.center M) :
+  g = h :=
+by { rcases H with ⟨u, hu⟩, rwa [← u.mul_left_inj, ← Hg u], }
+
+lemma eq_of_right_mem_center {g h : M} (H : is_conj g h) (Hh : h ∈ set.center M) :
+  g = h :=
+(H.symm.eq_of_left_mem_center Hh).symm
+
 end is_conj
 
 assert_not_exists multiset

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

chore(*/centralizer): add forgotten to_additives (#19168)

I forgot these in #18861. These are already in the forward-port PR, leanprover-community/mathlib4#4896.

Diff
@@ -1604,12 +1604,13 @@ set_like.ext' (set.centralizer_univ G)
 @[to_additive] lemma le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
 ⟨λ h x hx y hy, (h hy x hx).symm, λ h x hx y hy, (h hy x hx).symm⟩
 
-lemma center_le_centralizer (s) : center G ≤ centralizer s := set.center_subset_centralizer s
+@[to_additive] lemma center_le_centralizer (s) : center G ≤ centralizer s :=
+set.center_subset_centralizer s
 
 @[to_additive] lemma centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
 submonoid.centralizer_le h
 
-@[simp] lemma centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
+@[simp, to_additive] lemma centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
 set_like.ext'_iff.trans set.centralizer_eq_top_iff_subset
 
 @[to_additive] instance subgroup.centralizer.characteristic [hH : H.characteristic] :

(no changes)

(no changes)

(no changes)

(no changes)

feat(ring_theory/subring): centralizer as a subring (#18861)

Co-authored-by: Eric Rodriguez <37984851+ericrbg@users.noreply.github.com>

Diff
@@ -1604,9 +1604,14 @@ set_like.ext' (set.centralizer_univ G)
 @[to_additive] lemma le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
 ⟨λ h x hx y hy, (h hy x hx).symm, λ h x hx y hy, (h hy x hx).symm⟩
 
+lemma center_le_centralizer (s) : center G ≤ centralizer s := set.center_subset_centralizer s
+
 @[to_additive] lemma centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
 submonoid.centralizer_le h
 
+@[simp] lemma centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
+set_like.ext'_iff.trans set.centralizer_eq_top_iff_subset
+
 @[to_additive] instance subgroup.centralizer.characteristic [hH : H.characteristic] :
   H.centralizer.characteristic :=
 begin

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

chore(group_theory/subgroup/basic): Protect subgroup.subtype (#18712)

and subgroup_class.subtype. This was breaking the subtype notation for me in #18684. The longer term fix would be to add a _root_ in the notation declaration.

Diff
@@ -221,18 +221,18 @@ include hSG
 
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an additive subgroup of `add_group` `G` to `G`."]
-def subtype : H →* G := ⟨coe, rfl, λ _ _, rfl⟩
+protected def subtype : H →* G := ⟨coe, rfl, λ _ _, rfl⟩
 
-@[simp, to_additive] theorem coe_subtype : (subtype H : H → G) = coe := rfl
+@[simp, to_additive] theorem coe_subtype : (subgroup_class.subtype H : H → G) = coe := rfl
 
 variables {H}
 
 @[simp, norm_cast, to_additive coe_smul]
 lemma coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = x ^ n :=
-(subtype H : H →* G).map_pow _ _
+(subgroup_class.subtype H : H →* G).map_pow _ _
 
 @[simp, norm_cast, to_additive] lemma coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
-(subtype H : H →* G).map_zpow _ _
+(subgroup_class.subtype H : H →* G).map_zpow _ _
 
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
 @[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
@@ -257,7 +257,7 @@ by { cases a, simp only [inclusion, set_like.coe_mk, monoid_hom.mk'_apply] }
 
 @[simp, to_additive]
 lemma subtype_comp_inclusion {H K : S} (hH : H ≤ K) :
-  (subtype K).comp (inclusion hH) = subtype H :=
+  (subgroup_class.subtype K).comp (inclusion hH) = subgroup_class.subtype H :=
 by { ext, simp only [monoid_hom.comp_apply, coe_subtype, coe_inclusion] }
 
 end subgroup_class
@@ -538,11 +538,11 @@ subtype.coe_injective.linear_ordered_comm_group _
 
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an `add_subgroup` of `add_group` `G` to `G`."]
-def subtype : H →* G := ⟨coe, rfl, λ _ _, rfl⟩
+protected def subtype : H →* G := ⟨coe, rfl, λ _ _, rfl⟩
 
 @[simp, to_additive] theorem coe_subtype : ⇑H.subtype = coe := rfl
 
-@[to_additive] lemma subtype_injective : function.injective (subtype H) := subtype.coe_injective
+@[to_additive] lemma subtype_injective : injective (subgroup.subtype H) := subtype.coe_injective
 
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
 @[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

refactor(topology/algebra/field): drop topological_space_units (#18536)

See Zulip chat

Also generalize TC assumptions in inv_mem_iff.

Diff
@@ -116,6 +116,11 @@ class add_subgroup_class (S G : Type*) [sub_neg_monoid G] [set_like S G]
 
 attribute [to_additive] inv_mem_class subgroup_class
 
+@[simp, to_additive]
+theorem inv_mem_iff {S G} [has_involutive_inv G] [set_like S G] [inv_mem_class S G] {H : S}
+  {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
+⟨λ h, inv_inv x ▸ inv_mem h, inv_mem⟩
+
 variables {M S : Type*} [div_inv_monoid M] [set_like S M] [hSM : subgroup_class S M] {H K : S}
 include hSM
 
@@ -133,9 +138,6 @@ omit hSM
 variables [set_like S G] [hSG : subgroup_class S G]
 include hSG
 
-@[simp, to_additive] theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
-⟨λ h, inv_inv x ▸ inv_mem h, inv_mem⟩
-
 @[to_additive] lemma div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H :=
 by rw [← inv_mem_iff, div_eq_mul_inv, div_eq_mul_inv, mul_inv_rev, inv_inv]
 

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -2268,8 +2268,8 @@ theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀
   simp only [eq_bot_iff_forall]
   constructor
   · intro h i x hx
-    have : MonoidHom.single f i x = 1 :=
-      h (MonoidHom.single f i x) ((mul_single_mem_pi i x).mpr fun _ => hx)
+    have : MonoidHom.mulSingle f i x = 1 :=
+      h (MonoidHom.mulSingle f i x) ((mul_single_mem_pi i x).mpr fun _ => hx)
     simpa using congr_fun this i
   · exact fun h x hx => funext fun i => h _ _ (hx i trivial)
 #align subgroup.pi_eq_bot_iff Subgroup.pi_eq_bot_iff
Diff
@@ -155,7 +155,7 @@ theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
 #print zpow_mem /-
 @[to_additive]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
-  | (n : ℕ) => by rw [zpow_coe_nat]; exact pow_mem hx n
+  | (n : ℕ) => by rw [zpow_natCast]; exact pow_mem hx n
   | -[n+1] => by rw [zpow_negSucc]; exact inv_mem (pow_mem hx n.succ)
 #align zpow_mem zpow_mem
 #align zsmul_mem zsmul_mem
@@ -727,7 +727,7 @@ protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K :=
 #align add_subgroup.zsmul_mem AddSubgroup.zsmul_mem
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 #print Subgroup.ofDiv /-
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
Diff
@@ -1113,7 +1113,7 @@ theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
   · left
     exact H.eq_bot_iff_forall.mpr h
   · right
-    simp only [Classical.not_forall] at h 
+    simp only [Classical.not_forall] at h
     simpa only [nontrivial_iff_exists_ne_one]
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
@@ -1179,7 +1179,7 @@ theorem mem_sInf {S : Set (Subgroup G)} {x : G} : x ∈ sInf S ↔ ∀ p ∈ S,
 #print Subgroup.mem_iInf /-
 @[to_additive]
 theorem mem_iInf {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
-  simp only [iInf, mem_Inf, Set.forall_range_iff]
+  simp only [iInf, mem_Inf, Set.forall_mem_range]
 #align subgroup.mem_infi Subgroup.mem_iInf
 #align add_subgroup.mem_infi AddSubgroup.mem_iInf
 -/
@@ -2529,7 +2529,7 @@ theorem CommGroup.center_eq_top {G : Type _} [CommGroup G] : center G = ⊤ := b
 #print Group.commGroupOfCenterEqTop /-
 /-- A group is commutative if the center is the whole group -/
 def Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
-  { (_ : Group G) with mul_comm := by rw [eq_top_iff'] at h ; intro x y; exact h y x }
+  { (_ : Group G) with mul_comm := by rw [eq_top_iff'] at h; intro x y; exact h y x }
 #align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTop
 -/
 
@@ -2616,7 +2616,7 @@ instance (priority := 100) normal_in_normalizer : (H.subgroupOf H.normalizer).No
 theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
   eq_top_iff.trans
     ⟨fun h => ⟨fun a ha b => (h (mem_top b) a).mp ha⟩, fun h a ha b =>
-      ⟨fun hb => h.conj_mem b hb a, fun hb => by rwa [h.mem_comm_iff, inv_mul_cancel_left] at hb ⟩⟩
+      ⟨fun hb => h.conj_mem b hb a, fun hb => by rwa [h.mem_comm_iff, inv_mul_cancel_left] at hb⟩⟩
 #align subgroup.normalizer_eq_top Subgroup.normalizer_eq_top
 #align add_subgroup.normalizer_eq_top AddSubgroup.normalizer_eq_top
 -/
@@ -2852,7 +2852,7 @@ theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.Comm
         (by
           have := mul_comm (⟨f a, a.2⟩ : H) (⟨f b, b.2⟩ : H)
           rwa [Subtype.ext_iff, coe_mul, coe_mul, coe_mk, coe_mk, ← map_mul, ← map_mul,
-            hf.eq_iff] at this )⟩⟩
+            hf.eq_iff] at this)⟩⟩
 #align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutative
 #align add_subgroup.comap_injective_is_commutative AddSubgroup.comap_injective_isCommutative
 -/
@@ -3444,7 +3444,7 @@ theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
 #print MonoidHom.ker_eq_bot_iff /-
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
-  ⟨fun h x y hxy => by rwa [eq_iff, h, mem_bot, inv_mul_eq_one, eq_comm] at hxy , fun h =>
+  ⟨fun h x y hxy => by rwa [eq_iff, h, mem_bot, inv_mul_eq_one, eq_comm] at hxy, fun h =>
     bot_unique fun x hx => h (hx.trans f.map_one.symm)⟩
 #align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iff
 #align add_monoid_hom.ker_eq_bot_iff AddMonoidHom.ker_eq_bot_iff
@@ -3661,7 +3661,7 @@ theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
 theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
   by
   refine' le_antisymm _ (sup_le (le_comap_map _ _) (ker_le_comap _ _))
-  intro x hx; simp only [exists_prop, mem_map, mem_comap] at hx 
+  intro x hx; simp only [exists_prop, mem_map, mem_comap] at hx
   rcases hx with ⟨y, hy, hy'⟩
   rw [← mul_inv_cancel_left y x]
   exact mul_mem_sup hy (by simp [mem_ker, hy'])
@@ -3810,8 +3810,8 @@ theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.Lef
 theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
     (hf : map f H = map f K) : H = K :=
   by
-  apply_fun comap f at hf 
-  rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf 
+  apply_fun comap f at hf
+  rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf
 #align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_le
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
 -/
@@ -4217,7 +4217,7 @@ variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
   ⟨fun h => by
-    rw [← closure_eq s, ← closure_eq t, ← closure_union] at h 
+    rw [← closure_eq s, ← closure_eq t, ← closure_union] at h
     apply closure_induction h
     · rintro y (h | h)
       · exact ⟨y, h, 1, t.one_mem, by simp⟩
@@ -4254,7 +4254,7 @@ theorem mem_closure_pair {x y z : C} :
 @[to_additive]
 instance : IsModularLattice (Subgroup C) :=
   ⟨fun x y z xz a ha => by
-    rw [mem_inf, mem_sup] at ha 
+    rw [mem_inf, mem_sup] at ha
     rcases ha with ⟨⟨b, hb, c, hc, rfl⟩, haz⟩
     rw [mem_sup]
     exact ⟨b, hb, c, mem_inf.2 ⟨hc, (mul_mem_cancel_left (xz hb)).1 haz⟩, rfl⟩⟩
@@ -4352,7 +4352,7 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
     {a b : G} (hb : b ∈ K) (h : a * b ∈ H) : b * a ∈ H :=
   by
   have := (normal_subgroup_of_iff hK).mp hN (a * b) b h hb
-  rwa [mul_assoc, mul_assoc, mul_right_inv, mul_one] at this 
+  rwa [mul_assoc, mul_assoc, mul_right_inv, mul_one] at this
 #align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_comm
 #align add_subgroup.subgroup_normal.mem_comm AddSubgroup.SubgroupNormal.mem_comm
 -/
@@ -4364,7 +4364,7 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
     (hdis : Disjoint H₁ H₂) (x y : G) (hx : x ∈ H₁) (hy : y ∈ H₂) : Commute x y :=
   by
   suffices x * y * x⁻¹ * y⁻¹ = 1 by show x * y = y * x;
-    · rw [mul_assoc, mul_eq_one_iff_eq_inv] at this ; simpa
+    · rw [mul_assoc, mul_eq_one_iff_eq_inv] at this; simpa
   apply hdis.le_bot; constructor
   · suffices x * (y * x⁻¹ * y⁻¹) ∈ H₁ by simpa [mul_assoc]
     exact H₁.mul_mem hx (hH₁.conj_mem _ (H₁.inv_mem hx) _)
@@ -4413,10 +4413,10 @@ theorem mul_injective_of_disjoint {H₁ H₂ : Subgroup G} (h : Disjoint H₁ H
     Function.Injective (fun g => g.1 * g.2 : H₁ × H₂ → G) :=
   by
   intro x y hxy
-  rw [← inv_mul_eq_iff_eq_mul, ← mul_assoc, ← mul_inv_eq_one, mul_assoc] at hxy 
+  rw [← inv_mul_eq_iff_eq_mul, ← mul_assoc, ← mul_inv_eq_one, mul_assoc] at hxy
   replace hxy := disjoint_iff_mul_eq_one.mp h (y.1⁻¹ * x.1).Prop (x.2 * y.2⁻¹).Prop hxy
   rwa [coe_mul, coe_mul, coe_inv, coe_inv, inv_mul_eq_one, mul_inv_eq_one, ← Subtype.ext_iff, ←
-    Subtype.ext_iff, eq_comm, ← Prod.ext_iff] at hxy 
+    Subtype.ext_iff, eq_comm, ← Prod.ext_iff] at hxy
 #align subgroup.mul_injective_of_disjoint Subgroup.mul_injective_of_disjoint
 #align add_subgroup.add_injective_of_disjoint AddSubgroup.add_injective_of_disjoint
 -/
@@ -4442,12 +4442,12 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
     rintro ⟨x, hx⟩
     refine' ⟨⟨c⁻¹ * x * c, _⟩, _⟩
     · have h := hn.conj_mem _ hx c⁻¹
-      rwa [inv_inv] at h 
+      rwa [inv_inv] at h
     simp only [MonoidHom.codRestrict_apply, MulEquiv.coe_toMonoidHom, MulAut.conj_apply, coe_mk,
       MonoidHom.restrict_apply, Subtype.mk_eq_mk, ← mul_assoc, mul_inv_self, one_mul]
     rw [mul_assoc, mul_inv_self, mul_one]
   have ht' := map_mono (eq_top_iff.1 ht)
-  rw [← MonoidHom.range_eq_map, MonoidHom.range_top_of_surjective _ hs] at ht' 
+  rw [← MonoidHom.range_eq_map, MonoidHom.range_top_of_surjective _ hs] at ht'
   refine' eq_top_iff.2 (le_trans ht' (map_le_iff_le_comap.2 (normal_closure_le_normal _)))
   rw [Set.singleton_subset_iff, SetLike.mem_coe]
   simp only [MonoidHom.codRestrict_apply, MulEquiv.coe_toMonoidHom, MulAut.conj_apply, coe_mk,
Diff
@@ -869,12 +869,12 @@ theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
 #align add_subgroup.coe_zsmul AddSubgroup.coe_zsmul
 -/
 
-#print Subgroup.mk_eq_one_iff /-
+#print Subgroup.mk_eq_one /-
 @[simp, to_additive]
-theorem mk_eq_one_iff {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 :=
+theorem mk_eq_one {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 :=
   show (⟨g, h⟩ : H) = (⟨1, H.one_mem⟩ : H) ↔ g = 1 by simp
-#align subgroup.mk_eq_one_iff Subgroup.mk_eq_one_iff
-#align add_subgroup.mk_eq_zero_iff AddSubgroup.mk_eq_zero_iff
+#align subgroup.mk_eq_one_iff Subgroup.mk_eq_one
+#align add_subgroup.mk_eq_zero_iff AddSubgroup.mk_eq_zero
 -/
 
 #print Subgroup.toGroup /-
Diff
@@ -155,7 +155,7 @@ theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
 #print zpow_mem /-
 @[to_additive]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
-  | (n : ℕ) => by rw [zpow_ofNat]; exact pow_mem hx n
+  | (n : ℕ) => by rw [zpow_coe_nat]; exact pow_mem hx n
   | -[n+1] => by rw [zpow_negSucc]; exact inv_mem (pow_mem hx n.succ)
 #align zpow_mem zpow_mem
 #align zsmul_mem zsmul_mem
Diff
@@ -2800,16 +2800,16 @@ end Centralizer
 #print Subgroup.IsCommutative /-
 /-- Commutivity of a subgroup -/
 structure IsCommutative : Prop where
-  is_comm : IsCommutative H (· * ·)
+  is_comm : Std.Commutative H (· * ·)
 #align subgroup.is_commutative Subgroup.IsCommutative
 -/
 
-attribute [class] IsCommutative
+attribute [class] Std.Commutative
 
 #print AddSubgroup.IsCommutative /-
 /-- Commutivity of an additive subgroup -/
 structure AddSubgroup.IsCommutative (H : AddSubgroup A) : Prop where
-  is_comm : IsCommutative H (· + ·)
+  is_comm : Std.Commutative H (· + ·)
 #align add_subgroup.is_commutative AddSubgroup.IsCommutative
 -/
 
@@ -2820,21 +2820,21 @@ attribute [class] AddSubgroup.IsCommutative
 #print Subgroup.IsCommutative.commGroup /-
 /-- A commutative subgroup is commutative. -/
 @[to_additive "A commutative subgroup is commutative."]
-instance IsCommutative.commGroup [h : H.IsCommutativeₓ] : CommGroup H :=
+instance IsCommutative.commGroup [h : H.Commutative] : CommGroup H :=
   { H.toGroup with mul_comm := h.is_comm.comm }
 #align subgroup.is_commutative.comm_group Subgroup.IsCommutative.commGroup
 #align add_subgroup.is_commutative.add_comm_group AddSubgroup.IsCommutative.addCommGroup
 -/
 
 #print Subgroup.center.isCommutative /-
-instance center.isCommutative : (center G).IsCommutativeₓ :=
+instance center.isCommutative : (center G).Commutative :=
   ⟨⟨fun a b => Subtype.ext (b.2 a)⟩⟩
 #align subgroup.center.is_commutative Subgroup.center.isCommutative
 -/
 
 #print Subgroup.map_isCommutative /-
 @[to_additive]
-instance map_isCommutative (f : G →* G') [H.IsCommutativeₓ] : (H.map f).IsCommutativeₓ :=
+instance map_isCommutative (f : G →* G') [H.Commutative] : (H.map f).Commutative :=
   ⟨⟨by
       rintro ⟨-, a, ha, rfl⟩ ⟨-, b, hb, rfl⟩
       rw [Subtype.ext_iff, coe_mul, coe_mul, Subtype.coe_mk, Subtype.coe_mk, ← map_mul, ← map_mul]
@@ -2845,8 +2845,8 @@ instance map_isCommutative (f : G →* G') [H.IsCommutativeₓ] : (H.map f).IsCo
 
 #print Subgroup.comap_injective_isCommutative /-
 @[to_additive]
-theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutativeₓ] :
-    (H.comap f).IsCommutativeₓ :=
+theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.Commutative] :
+    (H.comap f).Commutative :=
   ⟨⟨fun a b =>
       Subtype.ext
         (by
@@ -2859,7 +2859,7 @@ theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCo
 
 #print Subgroup.subgroupOf_isCommutative /-
 @[to_additive]
-instance subgroupOf_isCommutative [H.IsCommutativeₓ] : (H.subgroupOf K).IsCommutativeₓ :=
+instance subgroupOf_isCommutative [H.Commutative] : (H.subgroupOf K).Commutative :=
   H.comap_injective_isCommutative Subtype.coe_injective
 #align subgroup.subgroup_of_is_commutative Subgroup.subgroupOf_isCommutative
 #align add_subgroup.add_subgroup_of_is_commutative AddSubgroup.addSubgroupOf_isCommutative
@@ -2867,7 +2867,7 @@ instance subgroupOf_isCommutative [H.IsCommutativeₓ] : (H.subgroupOf K).IsComm
 
 #print Subgroup.le_centralizer_iff_isCommutative /-
 @[to_additive]
-theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutativeₓ :=
+theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.Commutative :=
   ⟨fun h => ⟨⟨fun x y => Subtype.ext (h y.2 x x.2)⟩⟩, fun h x hx y hy =>
     congr_arg coe (h.1.1 ⟨y, hy⟩ ⟨x, hx⟩)⟩
 #align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutative
@@ -2876,7 +2876,7 @@ theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutati
 
 #print Subgroup.le_centralizer /-
 @[to_additive]
-theorem le_centralizer [h : H.IsCommutativeₓ] : H ≤ centralizer H :=
+theorem le_centralizer [h : H.Commutative] : H ≤ centralizer H :=
   le_centralizer_iff_isCommutative.mpr h
 #align subgroup.le_centralizer Subgroup.le_centralizer
 #align add_subgroup.le_centralizer AddSubgroup.le_centralizer
Diff
@@ -2292,7 +2292,7 @@ end Subgroup
 namespace AddSubgroup
 
 #print AddSubgroup.Normal /-
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
 /-- An add_subgroup is normal if whenever `n ∈ H`, then `g + n - g ∈ H` for every `g : G` -/
 structure Normal (H : AddSubgroup A) : Prop where
   conj_mem : ∀ n, n ∈ H → ∀ g : A, g + n + -g ∈ H
@@ -2820,21 +2820,21 @@ attribute [class] AddSubgroup.IsCommutative
 #print Subgroup.IsCommutative.commGroup /-
 /-- A commutative subgroup is commutative. -/
 @[to_additive "A commutative subgroup is commutative."]
-instance IsCommutative.commGroup [h : H.IsCommutative] : CommGroup H :=
+instance IsCommutative.commGroup [h : H.IsCommutativeₓ] : CommGroup H :=
   { H.toGroup with mul_comm := h.is_comm.comm }
 #align subgroup.is_commutative.comm_group Subgroup.IsCommutative.commGroup
 #align add_subgroup.is_commutative.add_comm_group AddSubgroup.IsCommutative.addCommGroup
 -/
 
 #print Subgroup.center.isCommutative /-
-instance center.isCommutative : (center G).IsCommutative :=
+instance center.isCommutative : (center G).IsCommutativeₓ :=
   ⟨⟨fun a b => Subtype.ext (b.2 a)⟩⟩
 #align subgroup.center.is_commutative Subgroup.center.isCommutative
 -/
 
 #print Subgroup.map_isCommutative /-
 @[to_additive]
-instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommutative :=
+instance map_isCommutative (f : G →* G') [H.IsCommutativeₓ] : (H.map f).IsCommutativeₓ :=
   ⟨⟨by
       rintro ⟨-, a, ha, rfl⟩ ⟨-, b, hb, rfl⟩
       rw [Subtype.ext_iff, coe_mul, coe_mul, Subtype.coe_mk, Subtype.coe_mk, ← map_mul, ← map_mul]
@@ -2845,8 +2845,8 @@ instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommu
 
 #print Subgroup.comap_injective_isCommutative /-
 @[to_additive]
-theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutative] :
-    (H.comap f).IsCommutative :=
+theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutativeₓ] :
+    (H.comap f).IsCommutativeₓ :=
   ⟨⟨fun a b =>
       Subtype.ext
         (by
@@ -2859,7 +2859,7 @@ theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCo
 
 #print Subgroup.subgroupOf_isCommutative /-
 @[to_additive]
-instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommutative :=
+instance subgroupOf_isCommutative [H.IsCommutativeₓ] : (H.subgroupOf K).IsCommutativeₓ :=
   H.comap_injective_isCommutative Subtype.coe_injective
 #align subgroup.subgroup_of_is_commutative Subgroup.subgroupOf_isCommutative
 #align add_subgroup.add_subgroup_of_is_commutative AddSubgroup.addSubgroupOf_isCommutative
@@ -2867,7 +2867,7 @@ instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommuta
 
 #print Subgroup.le_centralizer_iff_isCommutative /-
 @[to_additive]
-theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutative :=
+theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutativeₓ :=
   ⟨fun h => ⟨⟨fun x y => Subtype.ext (h y.2 x x.2)⟩⟩, fun h x hx y hy =>
     congr_arg coe (h.1.1 ⟨y, hy⟩ ⟨x, hx⟩)⟩
 #align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutative
@@ -2876,7 +2876,7 @@ theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutati
 
 #print Subgroup.le_centralizer /-
 @[to_additive]
-theorem le_centralizer [h : H.IsCommutative] : H ≤ centralizer H :=
+theorem le_centralizer [h : H.IsCommutativeₓ] : H ≤ centralizer H :=
   le_centralizer_iff_isCommutative.mpr h
 #align subgroup.le_centralizer Subgroup.le_centralizer
 #align add_subgroup.le_centralizer AddSubgroup.le_centralizer
Diff
@@ -1107,7 +1107,14 @@ theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x 
 #print Subgroup.bot_or_nontrivial /-
 /-- A subgroup is either the trivial subgroup or nontrivial. -/
 @[to_additive "A subgroup is either the trivial subgroup or nontrivial."]
-theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by classical
+theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
+  classical
+  by_cases h : ∀ x ∈ H, x = (1 : G)
+  · left
+    exact H.eq_bot_iff_forall.mpr h
+  · right
+    simp only [Classical.not_forall] at h 
+    simpa only [nontrivial_iff_exists_ne_one]
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
 -/
@@ -2256,7 +2263,15 @@ theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i
 
 #print Subgroup.pi_eq_bot_iff /-
 @[to_additive]
-theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀ i, H i = ⊥ := by classical
+theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀ i, H i = ⊥ := by
+  classical
+  simp only [eq_bot_iff_forall]
+  constructor
+  · intro h i x hx
+    have : MonoidHom.single f i x = 1 :=
+      h (MonoidHom.single f i x) ((mul_single_mem_pi i x).mpr fun _ => hx)
+    simpa using congr_fun this i
+  · exact fun h x hx => funext fun i => h _ _ (hx i trivial)
 #align subgroup.pi_eq_bot_iff Subgroup.pi_eq_bot_iff
 #align add_subgroup.pi_eq_bot_iff AddSubgroup.pi_eq_bot_iff
 -/
Diff
@@ -1107,14 +1107,7 @@ theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x 
 #print Subgroup.bot_or_nontrivial /-
 /-- A subgroup is either the trivial subgroup or nontrivial. -/
 @[to_additive "A subgroup is either the trivial subgroup or nontrivial."]
-theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
-  classical
-  by_cases h : ∀ x ∈ H, x = (1 : G)
-  · left
-    exact H.eq_bot_iff_forall.mpr h
-  · right
-    simp only [Classical.not_forall] at h 
-    simpa only [nontrivial_iff_exists_ne_one]
+theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by classical
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
 -/
@@ -2263,15 +2256,7 @@ theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i
 
 #print Subgroup.pi_eq_bot_iff /-
 @[to_additive]
-theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀ i, H i = ⊥ := by
-  classical
-  simp only [eq_bot_iff_forall]
-  constructor
-  · intro h i x hx
-    have : MonoidHom.single f i x = 1 :=
-      h (MonoidHom.single f i x) ((mul_single_mem_pi i x).mpr fun _ => hx)
-    simpa using congr_fun this i
-  · exact fun h x hx => funext fun i => h _ _ (hx i trivial)
+theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀ i, H i = ⊥ := by classical
 #align subgroup.pi_eq_bot_iff Subgroup.pi_eq_bot_iff
 #align add_subgroup.pi_eq_bot_iff AddSubgroup.pi_eq_bot_iff
 -/
Diff
@@ -197,13 +197,13 @@ theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
 
 namespace SubgroupClass
 
-#print SubgroupClass.inv /-
+#print InvMemClass.inv /-
 /-- A subgroup of a group inherits an inverse. -/
 @[to_additive "An additive subgroup of a `add_group` inherits an inverse."]
 instance inv : Inv H :=
   ⟨fun a => ⟨a⁻¹, inv_mem a.2⟩⟩
-#align subgroup_class.has_inv SubgroupClass.inv
-#align add_subgroup_class.has_neg AddSubgroupClass.neg
+#align subgroup_class.has_inv InvMemClass.inv
+#align add_subgroup_class.has_neg NegMemClass.neg
 -/
 
 #print SubgroupClass.div /-
@@ -232,12 +232,12 @@ instance zpow : Pow H ℤ :=
 #align add_subgroup_class.has_zsmul AddSubgroupClass.zsmul
 -/
 
-#print SubgroupClass.coe_inv /-
+#print InvMemClass.coe_inv /-
 @[simp, norm_cast, to_additive]
 theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : M) :=
   rfl
-#align subgroup_class.coe_inv SubgroupClass.coe_inv
-#align add_subgroup_class.coe_neg AddSubgroupClass.coe_neg
+#align subgroup_class.coe_inv InvMemClass.coe_inv
+#align add_subgroup_class.coe_neg NegMemClass.coe_neg
 -/
 
 #print SubgroupClass.coe_div /-
Diff
@@ -1746,22 +1746,22 @@ theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup
 #align add_subgroup.mem_map_iff_mem AddSubgroup.mem_map_iff_mem
 -/
 
-#print Subgroup.map_equiv_eq_comap_symm /-
+#print Subgroup.map_equiv_eq_comap_symm' /-
 @[to_additive]
-theorem map_equiv_eq_comap_symm (f : G ≃* N) (K : Subgroup G) :
+theorem map_equiv_eq_comap_symm' (f : G ≃* N) (K : Subgroup G) :
     K.map f.toMonoidHom = K.comap f.symm.toMonoidHom :=
   SetLike.coe_injective (f.toEquiv.image_eq_preimage K)
-#align subgroup.map_equiv_eq_comap_symm Subgroup.map_equiv_eq_comap_symm
-#align add_subgroup.map_equiv_eq_comap_symm AddSubgroup.map_equiv_eq_comap_symm
+#align subgroup.map_equiv_eq_comap_symm Subgroup.map_equiv_eq_comap_symm'
+#align add_subgroup.map_equiv_eq_comap_symm AddSubgroup.map_equiv_eq_comap_symm'
 -/
 
-#print Subgroup.comap_equiv_eq_map_symm /-
+#print Subgroup.comap_equiv_eq_map_symm' /-
 @[to_additive]
-theorem comap_equiv_eq_map_symm (f : N ≃* G) (K : Subgroup G) :
+theorem comap_equiv_eq_map_symm' (f : N ≃* G) (K : Subgroup G) :
     K.comap f.toMonoidHom = K.map f.symm.toMonoidHom :=
-  (map_equiv_eq_comap_symm f.symm K).symm
-#align subgroup.comap_equiv_eq_map_symm Subgroup.comap_equiv_eq_map_symm
-#align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm
+  (map_equiv_eq_comap_symm' f.symm K).symm
+#align subgroup.comap_equiv_eq_map_symm Subgroup.comap_equiv_eq_map_symm'
+#align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm'
 -/
 
 #print Subgroup.map_symm_eq_iff_map_eq /-
Diff
@@ -2292,7 +2292,7 @@ end Subgroup
 namespace AddSubgroup
 
 #print AddSubgroup.Normal /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
 /-- An add_subgroup is normal if whenever `n ∈ H`, then `g + n - g ∈ H` for every `g : G` -/
 structure Normal (H : AddSubgroup A) : Prop where
   conj_mem : ∀ n, n ∈ H → ∀ g : A, g + n + -g ∈ H
Diff
@@ -4372,7 +4372,7 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
     apply H₂.mul_mem _ (H₂.inv_mem hy)
     apply hH₂.conj_mem _ hy
 #align subgroup.commute_of_normal_of_disjoint Subgroup.commute_of_normal_of_disjoint
-#align add_subgroup.commute_of_normal_of_disjoint AddSubgroup.commute_of_normal_of_disjoint
+#align add_subgroup.commute_of_normal_of_disjoint AddSubgroup.addCommute_of_normal_of_disjoint
 -/
 
 end SubgroupNormal
Diff
@@ -1113,7 +1113,7 @@ theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
   · left
     exact H.eq_bot_iff_forall.mpr h
   · right
-    simp only [not_forall] at h 
+    simp only [Classical.not_forall] at h 
     simpa only [nontrivial_iff_exists_ne_one]
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
Diff
@@ -1508,7 +1508,7 @@ theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥
 #print Subgroup.iSup_eq_closure /-
 @[to_additive]
 theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
-    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_Union_of_finite, closure_eq]
+    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion_of_finite, closure_eq]
 #align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
 #align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
 -/
@@ -1567,7 +1567,7 @@ theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (h
   by
   refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup K i) hi⟩
   suffices x ∈ closure (⋃ i, (K i : Set G)) → ∃ i, x ∈ K i by
-    simpa only [closure_Union_of_finite, closure_eq (K _)] using this
+    simpa only [closure_iUnion_of_finite, closure_eq (K _)] using this
   refine' fun hx => closure_induction hx (fun _ => mem_Union.1) _ _ _
   · exact hι.elim fun i => ⟨i, (K i).one_mem⟩
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
Diff
@@ -3,14 +3,14 @@ Copyright (c) 2020 Kexing Ying. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 -/
-import Mathbin.Algebra.Group.Conj
-import Mathbin.Algebra.Module.Basic
-import Mathbin.Algebra.Order.Group.InjSurj
-import Mathbin.Data.Countable.Basic
-import Mathbin.GroupTheory.Submonoid.Centralizer
-import Mathbin.Logic.Encodable.Basic
-import Mathbin.Order.Atoms
-import Mathbin.Tactic.ApplyFun
+import Algebra.Group.Conj
+import Algebra.Module.Basic
+import Algebra.Order.Group.InjSurj
+import Data.Countable.Basic
+import GroupTheory.Submonoid.Centralizer
+import Logic.Encodable.Basic
+import Order.Atoms
+import Tactic.ApplyFun
 
 #align_import group_theory.subgroup.basic from "leanprover-community/mathlib"@"4be589053caf347b899a494da75410deb55fb3ef"
 
@@ -727,7 +727,7 @@ protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K :=
 #align add_subgroup.zsmul_mem AddSubgroup.zsmul_mem
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 #print Subgroup.ofDiv /-
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
@@ -2292,7 +2292,7 @@ end Subgroup
 namespace AddSubgroup
 
 #print AddSubgroup.Normal /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
 /-- An add_subgroup is normal if whenever `n ∈ H`, then `g + n - g ∈ H` for every `g : G` -/
 structure Normal (H : AddSubgroup A) : Prop where
   conj_mem : ∀ n, n ∈ H → ∀ g : A, g + n + -g ∈ H
Diff
@@ -2979,7 +2979,7 @@ instance normalClosure_normal : (normalClosure s).Normal :=
     by
     refine' Subgroup.closure_induction h (fun x hx => _) _ (fun x y ihx ihy => _) fun x ihx => _
     · exact conjugates_of_set_subset_normal_closure (conj_mem_conjugates_of_set hx)
-    · simpa using (normalClosure s).one_mem
+    · simpa using (normal_closure s).one_mem
     · rw [← conj_mul]
       exact mul_mem ihx ihy
     · rw [← conj_inv]
Diff
@@ -1508,7 +1508,7 @@ theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥
 #print Subgroup.iSup_eq_closure /-
 @[to_additive]
 theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
-    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
+    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_Union_of_finite, closure_eq]
 #align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
 #align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
 -/
@@ -1567,7 +1567,7 @@ theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (h
   by
   refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup K i) hi⟩
   suffices x ∈ closure (⋃ i, (K i : Set G)) → ∃ i, x ∈ K i by
-    simpa only [closure_iUnion, closure_eq (K _)] using this
+    simpa only [closure_Union_of_finite, closure_eq (K _)] using this
   refine' fun hx => closure_induction hx (fun _ => mem_Union.1) _ _ _
   · exact hι.elim fun i => ⟨i, (K i).one_mem⟩
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
Diff
@@ -182,7 +182,7 @@ theorem exists_inv_mem_iff_exists_mem {P : G → Prop} : (∃ x : G, x ∈ H ∧
 #print mul_mem_cancel_right /-
 @[to_additive]
 theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :=
-  ⟨fun hba => by simpa using mul_mem hba (inv_mem h), fun hb => mul_mem hb h⟩
+  ⟨fun hba => by simpa using mul_mem hba (inv_mem h), fun hb => hMul_mem hb h⟩
 #align mul_mem_cancel_right mul_mem_cancel_right
 #align add_mem_cancel_right add_mem_cancel_right
 -/
@@ -190,7 +190,7 @@ theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :
 #print mul_mem_cancel_left /-
 @[to_additive]
 theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
-  ⟨fun hab => by simpa using mul_mem (inv_mem h) hab, mul_mem h⟩
+  ⟨fun hab => by simpa using mul_mem (inv_mem h) hab, hMul_mem h⟩
 #align mul_mem_cancel_left mul_mem_cancel_left
 #align add_mem_cancel_left add_mem_cancel_left
 -/
@@ -429,7 +429,7 @@ instance : SetLike (Subgroup G) G where
 @[to_additive]
 instance : SubgroupClass (Subgroup G) G
     where
-  mul_mem := Subgroup.mul_mem'
+  hMul_mem := Subgroup.hMul_mem'
   one_mem := Subgroup.one_mem'
   inv_mem := Subgroup.inv_mem'
 
@@ -603,7 +603,7 @@ protected def copy (K : Subgroup G) (s : Set G) (hs : s = K) : Subgroup G
     where
   carrier := s
   one_mem' := hs.symm ▸ K.one_mem'
-  mul_mem' _ _ := hs.symm ▸ K.mul_mem'
+  hMul_mem' _ _ := hs.symm ▸ K.hMul_mem'
   inv_mem' _ := hs.symm ▸ K.inv_mem'
 #align subgroup.copy Subgroup.copy
 #align add_subgroup.copy AddSubgroup.copy
@@ -647,7 +647,7 @@ protected theorem one_mem : (1 : G) ∈ H :=
 /-- A subgroup is closed under multiplication. -/
 @[to_additive "An `add_subgroup` is closed under addition."]
 protected theorem mul_mem {x y : G} : x ∈ H → y ∈ H → x * y ∈ H :=
-  mul_mem
+  hMul_mem
 #align subgroup.mul_mem Subgroup.mul_mem
 #align add_subgroup.add_mem AddSubgroup.add_mem
 -/
@@ -740,7 +740,7 @@ def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ (x) (_ : x ∈ s) (y) (_ : y
   { carrier := s
     one_mem' := one_mem
     inv_mem' := inv_mem
-    mul_mem' := fun x y hx hy => by simpa using hs x hx y⁻¹ (inv_mem y hy) }
+    hMul_mem' := fun x y hx hy => by simpa using hs x hx y⁻¹ (inv_mem y hy) }
 #align subgroup.of_div Subgroup.ofDiv
 #align add_subgroup.of_sub AddSubgroup.ofSub
 -/
@@ -1227,7 +1227,7 @@ theorem mem_sup_right {S T : Subgroup G} : ∀ {x : G}, x ∈ T → x ∈ S ⊔
 #print Subgroup.mul_mem_sup /-
 @[to_additive]
 theorem mul_mem_sup {S T : Subgroup G} {x y : G} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
-  (S ⊔ T).mul_mem (mem_sup_left hx) (mem_sup_right hy)
+  (S ⊔ T).hMul_mem (mem_sup_left hx) (mem_sup_right hy)
 #align subgroup.mul_mem_sup Subgroup.mul_mem_sup
 #align add_subgroup.add_mem_sup AddSubgroup.add_mem_sup
 -/
@@ -1362,7 +1362,7 @@ theorem closure_induction {p : G → Prop} {x} (h : x ∈ closure k) (Hk : ∀ x
 @[elab_as_elim, to_additive "A dependent version of `add_subgroup.closure_induction`. "]
 theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
     (Hs : ∀ (x) (h : x ∈ k), p x (subset_closure h)) (H1 : p 1 (one_mem _))
-    (Hmul : ∀ x hx y hy, p x hx → p y hy → p (x * y) (mul_mem hx hy))
+    (Hmul : ∀ x hx y hy, p x hx → p y hy → p (x * y) (hMul_mem hx hy))
     (Hinv : ∀ x hx, p x hx → p x⁻¹ (inv_mem hx)) {x} (hx : x ∈ closure k) : p x hx :=
   by
   refine' Exists.elim _ fun (hx : x ∈ closure k) (hc : p x hx) => hc
@@ -2171,7 +2171,7 @@ def Submonoid.pi [∀ i, MulOneClass (f i)] (I : Set η) (s : ∀ i, Submonoid (
     Submonoid (∀ i, f i) where
   carrier := I.pi fun i => (s i).carrier
   one_mem' i _ := (s i).one_mem
-  mul_mem' p q hp hq i hI := (s i).mul_mem (hp i hI) (hq i hI)
+  hMul_mem' p q hp hq i hI := (s i).hMul_mem (hp i hI) (hq i hI)
 #align submonoid.pi Submonoid.pi
 #align add_submonoid.pi AddSubmonoid.pi
 -/
@@ -2544,7 +2544,7 @@ def normalizer : Subgroup G
     where
   carrier := {g : G | ∀ n, n ∈ H ↔ g * n * g⁻¹ ∈ H}
   one_mem' := by simp
-  mul_mem' a b (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) (hb : ∀ n, n ∈ H ↔ b * n * b⁻¹ ∈ H) n := by
+  hMul_mem' a b (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) (hb : ∀ n, n ∈ H ↔ b * n * b⁻¹ ∈ H) n := by
     rw [hb, ha]; simp [mul_assoc]
   inv_mem' a (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) n := by rw [ha (a⁻¹ * n * a⁻¹⁻¹)]; simp [mul_assoc]
 #align subgroup.normalizer Subgroup.normalizer
@@ -2561,7 +2561,7 @@ def setNormalizer (S : Set G) : Subgroup G
     where
   carrier := {g : G | ∀ n, n ∈ S ↔ g * n * g⁻¹ ∈ S}
   one_mem' := by simp
-  mul_mem' a b (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) (hb : ∀ n, n ∈ S ↔ b * n * b⁻¹ ∈ S) n := by
+  hMul_mem' a b (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) (hb : ∀ n, n ∈ S ↔ b * n * b⁻¹ ∈ S) n := by
     rw [hb, ha]; simp [mul_assoc]
   inv_mem' a (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) n := by rw [ha (a⁻¹ * n * a⁻¹⁻¹)]; simp [mul_assoc]
 #align subgroup.set_normalizer Subgroup.setNormalizer
@@ -3057,7 +3057,7 @@ def normalCore (H : Subgroup G) : Subgroup G
   carrier := {a : G | ∀ b : G, b * a * b⁻¹ ∈ H}
   one_mem' a := by rw [mul_one, mul_inv_self] <;> exact H.one_mem
   inv_mem' a h b := (congr_arg (· ∈ H) conj_inv).mp (H.inv_mem (h b))
-  mul_mem' a b ha hb c := (congr_arg (· ∈ H) conj_mul).mp (H.mul_mem (ha c) (hb c))
+  hMul_mem' a b ha hb c := (congr_arg (· ∈ H) conj_mul).mp (H.hMul_mem (ha c) (hb c))
 #align subgroup.normal_core Subgroup.normalCore
 -/
 
@@ -3876,7 +3876,7 @@ use `mul_equiv.subgroup_map` for better definitional equalities. -/
       "An additive subgroup is isomorphic to its image under an injective function. If you\nhave an isomorphism, use `add_equiv.add_subgroup_map` for better definitional equalities."]
 noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Function.Injective f) :
     H ≃* H.map f :=
-  { Equiv.Set.image f H hf with map_mul' := fun _ _ => Subtype.ext (f.map_mul _ _) }
+  { Equiv.Set.image f H hf with map_mul' := fun _ _ => Subtype.ext (f.map_hMul _ _) }
 #align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjective
 #align add_subgroup.equiv_map_of_injective AddSubgroup.equivMapOfInjective
 -/
@@ -4306,7 +4306,7 @@ theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
     [hN : (B'.subgroupOf B).Normal] : ((A ⊓ B').subgroupOf (A ⊓ B)).Normal :=
   {
     conj_mem := fun n hn g =>
-      ⟨mul_mem (mul_mem (mem_inf.1 g.2).1 (mem_inf.1 n.2).1) (inv_mem (mem_inf.1 g.2).1),
+      ⟨hMul_mem (hMul_mem (mem_inf.1 g.2).1 (mem_inf.1 n.2).1) (inv_mem (mem_inf.1 g.2).1),
         (normal_subgroupOf_iff hB).mp hN n g hn.2 (mem_inf.mp g.2).2⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_right
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_right AddSubgroup.inf_addSubgroupOf_inf_normal_of_right
@@ -4319,7 +4319,7 @@ theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (
   {
     conj_mem := fun n hn g =>
       ⟨(normal_subgroupOf_iff hA).mp hN n g hn.1 (mem_inf.mp g.2).1,
-        mul_mem (mul_mem (mem_inf.1 g.2).2 (mem_inf.1 n.2).2) (inv_mem (mem_inf.1 g.2).2)⟩ }
+        hMul_mem (hMul_mem (mem_inf.1 g.2).2 (mem_inf.1 n.2).2) (inv_mem (mem_inf.1 g.2).2)⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_left
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_left AddSubgroup.inf_addSubgroupOf_inf_normal_of_left
 -/
Diff
@@ -2743,11 +2743,13 @@ theorem mem_centralizer_iff_commutator_eq_one {g : G} {s : Set G} :
 #align add_subgroup.mem_centralizer_iff_commutator_eq_zero AddSubgroup.mem_centralizer_iff_commutator_eq_zero
 -/
 
+#print Subgroup.centralizer_univ /-
 @[to_additive]
 theorem centralizer_univ : centralizer Set.univ = center G :=
   SetLike.ext' (Set.centralizer_univ G)
 #align subgroup.centralizer_univ Subgroup.centralizer_univ
 #align add_subgroup.centralizer_univ AddSubgroup.centralizer_univ
+-/
 
 #print Subgroup.le_centralizer_iff /-
 @[to_additive]
Diff
@@ -12,7 +12,7 @@ import Mathbin.Logic.Encodable.Basic
 import Mathbin.Order.Atoms
 import Mathbin.Tactic.ApplyFun
 
-#align_import group_theory.subgroup.basic from "leanprover-community/mathlib"@"d30d31261cdb4d2f5e612eabc3c4bf45556350d5"
+#align_import group_theory.subgroup.basic from "leanprover-community/mathlib"@"4be589053caf347b899a494da75410deb55fb3ef"
 
 /-!
 # Subgroups
@@ -2712,23 +2712,23 @@ end Normalizer
 
 section Centralizer
 
+variable {H}
+
 #print Subgroup.centralizer /-
 /-- The `centralizer` of `H` is the subgroup of `g : G` commuting with every `h : H`. -/
 @[to_additive
       "The `centralizer` of `H` is the additive subgroup of `g : G` commuting with\nevery `h : H`."]
-def centralizer : Subgroup G :=
-  { Submonoid.centralizer ↑H with
-    carrier := Set.centralizer H
+def centralizer (s : Set G) : Subgroup G :=
+  { Submonoid.centralizer s with
+    carrier := Set.centralizer s
     inv_mem' := fun g => Set.inv_mem_centralizer }
 #align subgroup.centralizer Subgroup.centralizer
 #align add_subgroup.centralizer AddSubgroup.centralizer
 -/
 
-variable {H}
-
 #print Subgroup.mem_centralizer_iff /-
 @[to_additive]
-theorem mem_centralizer_iff {g : G} : g ∈ H.centralizer ↔ ∀ h ∈ H, h * g = g * h :=
+theorem mem_centralizer_iff {g : G} {s : Set G} : g ∈ centralizer s ↔ ∀ h ∈ s, h * g = g * h :=
   Iff.rfl
 #align subgroup.mem_centralizer_iff Subgroup.mem_centralizer_iff
 #align add_subgroup.mem_centralizer_iff AddSubgroup.mem_centralizer_iff
@@ -2736,24 +2736,22 @@ theorem mem_centralizer_iff {g : G} : g ∈ H.centralizer ↔ ∀ h ∈ H, h * g
 
 #print Subgroup.mem_centralizer_iff_commutator_eq_one /-
 @[to_additive]
-theorem mem_centralizer_iff_commutator_eq_one {g : G} :
-    g ∈ H.centralizer ↔ ∀ h ∈ H, h * g * h⁻¹ * g⁻¹ = 1 := by
+theorem mem_centralizer_iff_commutator_eq_one {g : G} {s : Set G} :
+    g ∈ centralizer s ↔ ∀ h ∈ s, h * g * h⁻¹ * g⁻¹ = 1 := by
   simp only [mem_centralizer_iff, mul_inv_eq_iff_eq_mul, one_mul]
 #align subgroup.mem_centralizer_iff_commutator_eq_one Subgroup.mem_centralizer_iff_commutator_eq_one
 #align add_subgroup.mem_centralizer_iff_commutator_eq_zero AddSubgroup.mem_centralizer_iff_commutator_eq_zero
 -/
 
-#print Subgroup.centralizer_top /-
 @[to_additive]
-theorem centralizer_top : centralizer ⊤ = center G :=
+theorem centralizer_univ : centralizer Set.univ = center G :=
   SetLike.ext' (Set.centralizer_univ G)
-#align subgroup.centralizer_top Subgroup.centralizer_top
-#align add_subgroup.centralizer_top AddSubgroup.centralizer_top
--/
+#align subgroup.centralizer_univ Subgroup.centralizer_univ
+#align add_subgroup.centralizer_univ AddSubgroup.centralizer_univ
 
 #print Subgroup.le_centralizer_iff /-
 @[to_additive]
-theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
+theorem le_centralizer_iff : H ≤ centralizer K ↔ K ≤ centralizer H :=
   ⟨fun h x hx y hy => (h hy x hx).symm, fun h x hx y hy => (h hy x hx).symm⟩
 #align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
 #align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
@@ -2769,7 +2767,7 @@ theorem center_le_centralizer (s) : center G ≤ centralizer s :=
 
 #print Subgroup.centralizer_le /-
 @[to_additive]
-theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
+theorem centralizer_le {s t : Set G} (h : s ⊆ t) : centralizer t ≤ centralizer s :=
   Submonoid.centralizer_le h
 #align subgroup.centralizer_le Subgroup.centralizer_le
 #align add_subgroup.centralizer_le AddSubgroup.centralizer_le
@@ -2777,7 +2775,7 @@ theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
 
 #print Subgroup.centralizer_eq_top_iff_subset /-
 @[simp, to_additive]
-theorem centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
+theorem centralizer_eq_top_iff_subset {s : Set G} : centralizer s = ⊤ ↔ s ⊆ center G :=
   SetLike.ext'_iff.trans Set.centralizer_eq_top_iff_subset
 #align subgroup.centralizer_eq_top_iff_subset Subgroup.centralizer_eq_top_iff_subset
 #align add_subgroup.centralizer_eq_top_iff_subset AddSubgroup.centralizer_eq_top_iff_subset
@@ -2786,7 +2784,7 @@ theorem centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center
 #print Subgroup.Centralizer.characteristic /-
 @[to_additive]
 instance Subgroup.Centralizer.characteristic [hH : H.Characteristic] :
-    H.centralizer.Characteristic :=
+    (centralizer (H : Set G)).Characteristic :=
   by
   refine' subgroup.characteristic_iff_comap_le.mpr fun ϕ g hg h hh => ϕ.Injective _
   rw [map_mul, map_mul]
@@ -2867,7 +2865,7 @@ instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommuta
 
 #print Subgroup.le_centralizer_iff_isCommutative /-
 @[to_additive]
-theorem le_centralizer_iff_isCommutative : K ≤ K.centralizer ↔ K.IsCommutative :=
+theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutative :=
   ⟨fun h => ⟨⟨fun x y => Subtype.ext (h y.2 x x.2)⟩⟩, fun h x hx y hy =>
     congr_arg coe (h.1.1 ⟨y, hy⟩ ⟨x, hx⟩)⟩
 #align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutative
@@ -2876,7 +2874,7 @@ theorem le_centralizer_iff_isCommutative : K ≤ K.centralizer ↔ K.IsCommutati
 
 #print Subgroup.le_centralizer /-
 @[to_additive]
-theorem le_centralizer [h : H.IsCommutative] : H ≤ H.centralizer :=
+theorem le_centralizer [h : H.IsCommutative] : H ≤ centralizer H :=
   le_centralizer_iff_isCommutative.mpr h
 #align subgroup.le_centralizer Subgroup.le_centralizer
 #align add_subgroup.le_centralizer AddSubgroup.le_centralizer
Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2020 Kexing Ying. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
-
-! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit d30d31261cdb4d2f5e612eabc3c4bf45556350d5
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Group.Conj
 import Mathbin.Algebra.Module.Basic
@@ -17,6 +12,8 @@ import Mathbin.Logic.Encodable.Basic
 import Mathbin.Order.Atoms
 import Mathbin.Tactic.ApplyFun
 
+#align_import group_theory.subgroup.basic from "leanprover-community/mathlib"@"d30d31261cdb4d2f5e612eabc3c4bf45556350d5"
+
 /-!
 # Subgroups
 
@@ -730,7 +727,7 @@ protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K :=
 #align add_subgroup.zsmul_mem AddSubgroup.zsmul_mem
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 #print Subgroup.ofDiv /-
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
Diff
@@ -4461,13 +4461,17 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
 
 variable {M : Type _} [Monoid M]
 
+#print IsConj.eq_of_left_mem_center /-
 theorem eq_of_left_mem_center {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M) : g = h := by
   rcases H with ⟨u, hu⟩; rwa [← u.mul_left_inj, ← Hg u]
 #align is_conj.eq_of_left_mem_center IsConj.eq_of_left_mem_center
+-/
 
+#print IsConj.eq_of_right_mem_center /-
 theorem eq_of_right_mem_center {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center M) : g = h :=
   (H.symm.eq_of_left_mem_center Hh).symm
 #align is_conj.eq_of_right_mem_center IsConj.eq_of_right_mem_center
+-/
 
 end IsConj
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit cc67cd75b4e54191e13c2e8d722289a89e67e4fa
+! leanprover-community/mathlib commit d30d31261cdb4d2f5e612eabc3c4bf45556350d5
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -4459,6 +4459,16 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
 #align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_of
 -/
 
+variable {M : Type _} [Monoid M]
+
+theorem eq_of_left_mem_center {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M) : g = h := by
+  rcases H with ⟨u, hu⟩; rwa [← u.mul_left_inj, ← Hg u]
+#align is_conj.eq_of_left_mem_center IsConj.eq_of_left_mem_center
+
+theorem eq_of_right_mem_center {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center M) : g = h :=
+  (H.symm.eq_of_left_mem_center Hh).symm
+#align is_conj.eq_of_right_mem_center IsConj.eq_of_right_mem_center
+
 end IsConj
 
 assert_not_exists Multiset
Diff
@@ -135,67 +135,71 @@ class AddSubgroupClass (S G : Type _) [SubNegMonoid G] [SetLike S G] extends Add
 
 attribute [to_additive] InvMemClass SubgroupClass
 
+#print inv_mem_iff /-
 @[simp, to_additive]
 theorem inv_mem_iff {S G} [InvolutiveInv G] [SetLike S G] [InvMemClass S G] {H : S} {x : G} :
     x⁻¹ ∈ H ↔ x ∈ H :=
   ⟨fun h => inv_inv x ▸ inv_mem h, inv_mem⟩
 #align inv_mem_iff inv_mem_iff
 #align neg_mem_iff neg_mem_iff
+-/
 
 variable {M S : Type _} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
 
-include hSM
-
+#print div_mem /-
 /-- A subgroup is closed under division. -/
 @[to_additive "An additive subgroup is closed under subtraction."]
 theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
   rw [div_eq_mul_inv] <;> exact mul_mem hx (inv_mem hy)
 #align div_mem div_mem
 #align sub_mem sub_mem
+-/
 
+#print zpow_mem /-
 @[to_additive]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
   | (n : ℕ) => by rw [zpow_ofNat]; exact pow_mem hx n
   | -[n+1] => by rw [zpow_negSucc]; exact inv_mem (pow_mem hx n.succ)
 #align zpow_mem zpow_mem
 #align zsmul_mem zsmul_mem
-
-omit hSM
+-/
 
 variable [SetLike S G] [hSG : SubgroupClass S G]
 
-include hSG
-
+#print div_mem_comm_iff /-
 @[to_additive]
 theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H := by
   rw [← inv_mem_iff, div_eq_mul_inv, div_eq_mul_inv, mul_inv_rev, inv_inv]
 #align div_mem_comm_iff div_mem_comm_iff
 #align sub_mem_comm_iff sub_mem_comm_iff
+-/
 
+#print exists_inv_mem_iff_exists_mem /-
 @[simp, to_additive]
 theorem exists_inv_mem_iff_exists_mem {P : G → Prop} : (∃ x : G, x ∈ H ∧ P x⁻¹) ↔ ∃ x ∈ H, P x := by
   constructor <;> · rintro ⟨x, x_in, hx⟩; exact ⟨x⁻¹, inv_mem x_in, by simp [hx]⟩
 #align exists_inv_mem_iff_exists_mem exists_inv_mem_iff_exists_mem
 #align exists_neg_mem_iff_exists_mem exists_neg_mem_iff_exists_mem
+-/
 
+#print mul_mem_cancel_right /-
 @[to_additive]
 theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :=
   ⟨fun hba => by simpa using mul_mem hba (inv_mem h), fun hb => mul_mem hb h⟩
 #align mul_mem_cancel_right mul_mem_cancel_right
 #align add_mem_cancel_right add_mem_cancel_right
+-/
 
+#print mul_mem_cancel_left /-
 @[to_additive]
 theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
   ⟨fun hab => by simpa using mul_mem (inv_mem h) hab, mul_mem h⟩
 #align mul_mem_cancel_left mul_mem_cancel_left
 #align add_mem_cancel_left add_mem_cancel_left
+-/
 
 namespace SubgroupClass
 
-omit hSG
-
-include hSM
-
 #print SubgroupClass.inv /-
 /-- A subgroup of a group inherits an inverse. -/
 @[to_additive "An additive subgroup of a `add_group` inherits an inverse."]
@@ -214,8 +218,6 @@ instance div : Div H :=
 #align add_subgroup_class.has_sub AddSubgroupClass.sub
 -/
 
-omit hSM
-
 #print AddSubgroupClass.zsmul /-
 /-- An additive subgroup of an `add_group` inherits an integer scaling. -/
 instance AddSubgroupClass.zsmul {M S} [SubNegMonoid M] [SetLike S M] [AddSubgroupClass S M]
@@ -224,8 +226,6 @@ instance AddSubgroupClass.zsmul {M S} [SubNegMonoid M] [SetLike S M] [AddSubgrou
 #align add_subgroup_class.has_zsmul AddSubgroupClass.zsmul
 -/
 
-include hSM
-
 #print SubgroupClass.zpow /-
 /-- A subgroup of a group inherits an integer power. -/
 @[to_additive]
@@ -235,24 +235,24 @@ instance zpow : Pow H ℤ :=
 #align add_subgroup_class.has_zsmul AddSubgroupClass.zsmul
 -/
 
+#print SubgroupClass.coe_inv /-
 @[simp, norm_cast, to_additive]
 theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : M) :=
   rfl
 #align subgroup_class.coe_inv SubgroupClass.coe_inv
 #align add_subgroup_class.coe_neg AddSubgroupClass.coe_neg
+-/
 
+#print SubgroupClass.coe_div /-
 @[simp, norm_cast, to_additive]
 theorem coe_div (x y : H) : (↑(x / y) : M) = ↑x / ↑y :=
   rfl
 #align subgroup_class.coe_div SubgroupClass.coe_div
 #align add_subgroup_class.coe_sub AddSubgroupClass.coe_sub
-
-omit hSM
+-/
 
 variable (H)
 
-include hSG
-
 #print SubgroupClass.toGroup /-
 -- Prefer subclasses of `group` over subclasses of `subgroup_class`.
 /-- A subgroup of a group inherits a group structure. -/
@@ -264,8 +264,6 @@ instance (priority := 75) toGroup : Group H :=
 #align add_subgroup_class.to_add_group AddSubgroupClass.toAddGroup
 -/
 
-omit hSG
-
 #print SubgroupClass.toCommGroup /-
 -- Prefer subclasses of `comm_group` over subclasses of `subgroup_class`.
 /-- A subgroup of a `comm_group` is a `comm_group`. -/
@@ -303,8 +301,6 @@ instance (priority := 75) toLinearOrderedCommGroup {G : Type _} [LinearOrderedCo
 #align add_subgroup_class.to_linear_ordered_add_comm_group AddSubgroupClass.toLinearOrderedAddCommGroup
 -/
 
-include hSG
-
 #print SubgroupClass.subtype /-
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an additive subgroup of `add_group` `G` to `G`."]
@@ -314,67 +310,87 @@ protected def subtype : H →* G :=
 #align add_subgroup_class.subtype AddSubgroupClass.subtype
 -/
 
+#print SubgroupClass.coeSubtype /-
 @[simp, to_additive]
 theorem coeSubtype : (SubgroupClass.subtype H : H → G) = coe :=
   rfl
 #align subgroup_class.coe_subtype SubgroupClass.coeSubtype
 #align add_subgroup_class.coe_subtype AddSubgroupClass.coeSubtype
+-/
 
 variable {H}
 
+#print SubgroupClass.coe_pow /-
 @[simp, norm_cast, to_additive coe_smul]
 theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = x ^ n :=
   (SubgroupClass.subtype H : H →* G).map_pow _ _
 #align subgroup_class.coe_pow SubgroupClass.coe_pow
 #align add_subgroup_class.coe_smul AddSubgroupClass.coe_nsmul
+-/
 
+#print SubgroupClass.coe_zpow /-
 @[simp, norm_cast, to_additive]
 theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
   (SubgroupClass.subtype H : H →* G).map_zpow _ _
 #align subgroup_class.coe_zpow SubgroupClass.coe_zpow
 #align add_subgroup_class.coe_zsmul AddSubgroupClass.coe_zsmul
+-/
 
+#print SubgroupClass.inclusion /-
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
 @[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
 def inclusion {H K : S} (h : H ≤ K) : H →* K :=
   MonoidHom.mk' (fun x => ⟨x, h x.Prop⟩) fun ⟨a, ha⟩ ⟨b, hb⟩ => rfl
 #align subgroup_class.inclusion SubgroupClass.inclusion
 #align add_subgroup_class.inclusion AddSubgroupClass.inclusion
+-/
 
+#print SubgroupClass.inclusion_self /-
 @[simp, to_additive]
 theorem inclusion_self (x : H) : inclusion le_rfl x = x := by cases x; rfl
 #align subgroup_class.inclusion_self SubgroupClass.inclusion_self
 #align add_subgroup_class.inclusion_self AddSubgroupClass.inclusion_self
+-/
 
+#print SubgroupClass.inclusion_mk /-
 @[simp, to_additive]
 theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ :=
   rfl
 #align subgroup_class.inclusion_mk SubgroupClass.inclusion_mk
 #align add_subgroup_class.inclusion_mk AddSubgroupClass.inclusion_mk
+-/
 
+#print SubgroupClass.inclusion_right /-
 @[to_additive]
 theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x := by
   cases x; rfl
 #align subgroup_class.inclusion_right SubgroupClass.inclusion_right
 #align add_subgroup_class.inclusion_right AddSubgroupClass.inclusion_right
+-/
 
+#print SubgroupClass.inclusion_inclusion /-
 @[simp]
 theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
     inclusion hKL (inclusion hHK x) = inclusion (hHK.trans hKL) x := by cases x; rfl
 #align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusion
+-/
 
+#print SubgroupClass.coe_inclusion /-
 @[simp, to_additive]
 theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by cases a;
   simp only [inclusion, SetLike.coe_mk, MonoidHom.mk'_apply]
 #align subgroup_class.coe_inclusion SubgroupClass.coe_inclusion
 #align add_subgroup_class.coe_inclusion AddSubgroupClass.coe_inclusion
+-/
 
+#print SubgroupClass.subtype_comp_inclusion /-
 @[simp, to_additive]
 theorem subtype_comp_inclusion {H K : S} (hH : H ≤ K) :
     (SubgroupClass.subtype K).comp (inclusion hH) = SubgroupClass.subtype H := by ext;
   simp only [MonoidHom.comp_apply, coeSubtype, coe_inclusion]
 #align subgroup_class.subtype_comp_inclusion SubgroupClass.subtype_comp_inclusion
 #align add_subgroup_class.subtype_comp_inclusion AddSubgroupClass.subtype_comp_inclusion
+-/
 
 end SubgroupClass
 
@@ -420,30 +436,38 @@ instance : SubgroupClass (Subgroup G) G
   one_mem := Subgroup.one_mem'
   inv_mem := Subgroup.inv_mem'
 
+#print Subgroup.mem_carrier /-
 @[simp, to_additive]
 theorem mem_carrier {s : Subgroup G} {x : G} : x ∈ s.carrier ↔ x ∈ s :=
   Iff.rfl
 #align subgroup.mem_carrier Subgroup.mem_carrier
 #align add_subgroup.mem_carrier AddSubgroup.mem_carrier
+-/
 
+#print Subgroup.mem_mk /-
 @[simp, to_additive]
 theorem mem_mk {s : Set G} {x : G} (h_one) (h_mul) (h_inv) : x ∈ mk s h_one h_mul h_inv ↔ x ∈ s :=
   Iff.rfl
 #align subgroup.mem_mk Subgroup.mem_mk
 #align add_subgroup.mem_mk AddSubgroup.mem_mk
+-/
 
+#print Subgroup.coe_set_mk /-
 @[simp, to_additive]
 theorem coe_set_mk {s : Set G} (h_one) (h_mul) (h_inv) : (mk s h_one h_mul h_inv : Set G) = s :=
   rfl
 #align subgroup.coe_set_mk Subgroup.coe_set_mk
 #align add_subgroup.coe_set_mk AddSubgroup.coe_set_mk
+-/
 
+#print Subgroup.mk_le_mk /-
 @[simp, to_additive]
 theorem mk_le_mk {s t : Set G} (h_one) (h_mul) (h_inv) (h_one') (h_mul') (h_inv') :
     mk s h_one h_mul h_inv ≤ mk t h_one' h_mul' h_inv' ↔ s ⊆ t :=
   Iff.rfl
 #align subgroup.mk_le_mk Subgroup.mk_le_mk
 #align add_subgroup.mk_le_mk AddSubgroup.mk_le_mk
+-/
 
 /-- See Note [custom simps projection] -/
 @[to_additive "See Note [custom simps projection]"]
@@ -456,17 +480,21 @@ initialize_simps_projections Subgroup (carrier → coe)
 
 initialize_simps_projections AddSubgroup (carrier → coe)
 
+#print Subgroup.coe_toSubmonoid /-
 @[simp, to_additive]
 theorem coe_toSubmonoid (K : Subgroup G) : (K.toSubmonoid : Set G) = K :=
   rfl
 #align subgroup.coe_to_submonoid Subgroup.coe_toSubmonoid
 #align add_subgroup.coe_to_add_submonoid AddSubgroup.coe_toAddSubmonoid
+-/
 
+#print Subgroup.mem_toSubmonoid /-
 @[simp, to_additive]
 theorem mem_toSubmonoid (K : Subgroup G) (x : G) : x ∈ K.toSubmonoid ↔ x ∈ K :=
   Iff.rfl
 #align subgroup.mem_to_submonoid Subgroup.mem_toSubmonoid
 #align add_subgroup.mem_to_add_submonoid AddSubgroup.mem_toAddSubmonoid
+-/
 
 #print Subgroup.toSubmonoid_injective /-
 @[to_additive]
@@ -484,27 +512,33 @@ theorem toSubmonoid_eq {p q : Subgroup G} : p.toSubmonoid = q.toSubmonoid ↔ p
 #align add_subgroup.to_add_submonoid_eq AddSubgroup.toAddSubmonoid_eq
 -/
 
+#print Subgroup.toSubmonoid_strictMono /-
 @[to_additive, mono]
 theorem toSubmonoid_strictMono : StrictMono (toSubmonoid : Subgroup G → Submonoid G) := fun _ _ =>
   id
 #align subgroup.to_submonoid_strict_mono Subgroup.toSubmonoid_strictMono
 #align add_subgroup.to_add_submonoid_strict_mono AddSubgroup.toAddSubmonoid_strictMono
+-/
 
 attribute [mono] AddSubgroup.toAddSubmonoid_strictMono
 
+#print Subgroup.toSubmonoid_mono /-
 @[to_additive, mono]
 theorem toSubmonoid_mono : Monotone (toSubmonoid : Subgroup G → Submonoid G) :=
   toSubmonoid_strictMono.Monotone
 #align subgroup.to_submonoid_mono Subgroup.toSubmonoid_mono
 #align add_subgroup.to_add_submonoid_mono AddSubgroup.toAddSubmonoid_mono
+-/
 
 attribute [mono] AddSubgroup.toAddSubmonoid_mono
 
+#print Subgroup.toSubmonoid_le /-
 @[simp, to_additive]
 theorem toSubmonoid_le {p q : Subgroup G} : p.toSubmonoid ≤ q.toSubmonoid ↔ p ≤ q :=
   Iff.rfl
 #align subgroup.to_submonoid_le Subgroup.toSubmonoid_le
 #align add_subgroup.to_add_submonoid_le AddSubgroup.toAddSubmonoid_le
+-/
 
 end Subgroup
 
@@ -515,6 +549,7 @@ end Subgroup
 
 section mul_add
 
+#print Subgroup.toAddSubgroup /-
 /-- Supgroups of a group `G` are isomorphic to additive subgroups of `additive G`. -/
 @[simps]
 def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G)
@@ -525,12 +560,16 @@ def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G)
   right_inv x := by cases x <;> rfl
   map_rel_iff' a b := Iff.rfl
 #align subgroup.to_add_subgroup Subgroup.toAddSubgroup
+-/
 
+#print AddSubgroup.toSubgroup' /-
 /-- Additive subgroup of an additive group `additive G` are isomorphic to subgroup of `G`. -/
 abbrev AddSubgroup.toSubgroup' : AddSubgroup (Additive G) ≃o Subgroup G :=
   Subgroup.toAddSubgroup.symm
 #align add_subgroup.to_subgroup' AddSubgroup.toSubgroup'
+-/
 
+#print AddSubgroup.toSubgroup /-
 /-- Additive supgroups of an additive group `A` are isomorphic to subgroups of `multiplicative A`.
 -/
 @[simps]
@@ -542,12 +581,15 @@ def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A)
   right_inv x := by cases x <;> rfl
   map_rel_iff' a b := Iff.rfl
 #align add_subgroup.to_subgroup AddSubgroup.toSubgroup
+-/
 
+#print Subgroup.toAddSubgroup' /-
 /-- Subgroups of an additive group `multiplicative A` are isomorphic to additive subgroups of `A`.
 -/
 abbrev Subgroup.toAddSubgroup' : Subgroup (Multiplicative A) ≃o AddSubgroup A :=
   AddSubgroup.toSubgroup.symm
 #align subgroup.to_add_subgroup' Subgroup.toAddSubgroup'
+-/
 
 end mul_add
 
@@ -555,6 +597,7 @@ namespace Subgroup
 
 variable (H K : Subgroup G)
 
+#print Subgroup.copy /-
 /-- Copy of a subgroup with a new `carrier` equal to the old one. Useful to fix definitional
 equalities.-/
 @[to_additive
@@ -567,98 +610,128 @@ protected def copy (K : Subgroup G) (s : Set G) (hs : s = K) : Subgroup G
   inv_mem' _ := hs.symm ▸ K.inv_mem'
 #align subgroup.copy Subgroup.copy
 #align add_subgroup.copy AddSubgroup.copy
+-/
 
+#print Subgroup.coe_copy /-
 @[simp, to_additive]
 theorem coe_copy (K : Subgroup G) (s : Set G) (hs : s = ↑K) : (K.copy s hs : Set G) = s :=
   rfl
 #align subgroup.coe_copy Subgroup.coe_copy
 #align add_subgroup.coe_copy AddSubgroup.coe_copy
+-/
 
+#print Subgroup.copy_eq /-
 @[to_additive]
 theorem copy_eq (K : Subgroup G) (s : Set G) (hs : s = ↑K) : K.copy s hs = K :=
   SetLike.coe_injective hs
 #align subgroup.copy_eq Subgroup.copy_eq
 #align add_subgroup.copy_eq AddSubgroup.copy_eq
+-/
 
+#print Subgroup.ext /-
 /-- Two subgroups are equal if they have the same elements. -/
 @[ext, to_additive "Two `add_subgroup`s are equal if they have the same elements."]
 theorem ext {H K : Subgroup G} (h : ∀ x, x ∈ H ↔ x ∈ K) : H = K :=
   SetLike.ext h
 #align subgroup.ext Subgroup.ext
 #align add_subgroup.ext AddSubgroup.ext
+-/
 
+#print Subgroup.one_mem /-
 /-- A subgroup contains the group's 1. -/
 @[to_additive "An `add_subgroup` contains the group's 0."]
 protected theorem one_mem : (1 : G) ∈ H :=
   one_mem _
 #align subgroup.one_mem Subgroup.one_mem
 #align add_subgroup.zero_mem AddSubgroup.zero_mem
+-/
 
+#print Subgroup.mul_mem /-
 /-- A subgroup is closed under multiplication. -/
 @[to_additive "An `add_subgroup` is closed under addition."]
 protected theorem mul_mem {x y : G} : x ∈ H → y ∈ H → x * y ∈ H :=
   mul_mem
 #align subgroup.mul_mem Subgroup.mul_mem
 #align add_subgroup.add_mem AddSubgroup.add_mem
+-/
 
+#print Subgroup.inv_mem /-
 /-- A subgroup is closed under inverse. -/
 @[to_additive "An `add_subgroup` is closed under inverse."]
 protected theorem inv_mem {x : G} : x ∈ H → x⁻¹ ∈ H :=
   inv_mem
 #align subgroup.inv_mem Subgroup.inv_mem
 #align add_subgroup.neg_mem AddSubgroup.neg_mem
+-/
 
+#print Subgroup.div_mem /-
 /-- A subgroup is closed under division. -/
 @[to_additive "An `add_subgroup` is closed under subtraction."]
 protected theorem div_mem {x y : G} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H :=
   div_mem hx hy
 #align subgroup.div_mem Subgroup.div_mem
 #align add_subgroup.sub_mem AddSubgroup.sub_mem
+-/
 
+#print Subgroup.inv_mem_iff /-
 @[to_additive]
 protected theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
   inv_mem_iff
 #align subgroup.inv_mem_iff Subgroup.inv_mem_iff
 #align add_subgroup.neg_mem_iff AddSubgroup.neg_mem_iff
+-/
 
+#print Subgroup.div_mem_comm_iff /-
 @[to_additive]
 protected theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H :=
   div_mem_comm_iff
 #align subgroup.div_mem_comm_iff Subgroup.div_mem_comm_iff
 #align add_subgroup.sub_mem_comm_iff AddSubgroup.sub_mem_comm_iff
+-/
 
+#print Subgroup.exists_inv_mem_iff_exists_mem /-
 @[to_additive]
 protected theorem exists_inv_mem_iff_exists_mem (K : Subgroup G) {P : G → Prop} :
     (∃ x : G, x ∈ K ∧ P x⁻¹) ↔ ∃ x ∈ K, P x :=
   exists_inv_mem_iff_exists_mem
 #align subgroup.exists_inv_mem_iff_exists_mem Subgroup.exists_inv_mem_iff_exists_mem
 #align add_subgroup.exists_neg_mem_iff_exists_mem AddSubgroup.exists_neg_mem_iff_exists_mem
+-/
 
+#print Subgroup.mul_mem_cancel_right /-
 @[to_additive]
 protected theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :=
   mul_mem_cancel_right h
 #align subgroup.mul_mem_cancel_right Subgroup.mul_mem_cancel_right
 #align add_subgroup.add_mem_cancel_right AddSubgroup.add_mem_cancel_right
+-/
 
+#print Subgroup.mul_mem_cancel_left /-
 @[to_additive]
 protected theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
   mul_mem_cancel_left h
 #align subgroup.mul_mem_cancel_left Subgroup.mul_mem_cancel_left
 #align add_subgroup.add_mem_cancel_left AddSubgroup.add_mem_cancel_left
+-/
 
+#print Subgroup.pow_mem /-
 @[to_additive AddSubgroup.nsmul_mem]
 protected theorem pow_mem {x : G} (hx : x ∈ K) : ∀ n : ℕ, x ^ n ∈ K :=
   pow_mem hx
 #align subgroup.pow_mem Subgroup.pow_mem
 #align add_subgroup.nsmul_mem AddSubgroup.nsmul_mem
+-/
 
+#print Subgroup.zpow_mem /-
 @[to_additive]
 protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K :=
   zpow_mem hx
 #align subgroup.zpow_mem Subgroup.zpow_mem
 #align add_subgroup.zsmul_mem AddSubgroup.zsmul_mem
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+#print Subgroup.ofDiv /-
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
 def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), x * y⁻¹ ∈ s) :
@@ -673,107 +746,141 @@ def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ (x) (_ : x ∈ s) (y) (_ : y
     mul_mem' := fun x y hx hy => by simpa using hs x hx y⁻¹ (inv_mem y hy) }
 #align subgroup.of_div Subgroup.ofDiv
 #align add_subgroup.of_sub AddSubgroup.ofSub
+-/
 
+#print Subgroup.mul /-
 /-- A subgroup of a group inherits a multiplication. -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits an addition."]
 instance mul : Mul H :=
   H.toSubmonoid.Mul
 #align subgroup.has_mul Subgroup.mul
 #align add_subgroup.has_add AddSubgroup.add
+-/
 
+#print Subgroup.one /-
 /-- A subgroup of a group inherits a 1. -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits a zero."]
 instance one : One H :=
   H.toSubmonoid.One
 #align subgroup.has_one Subgroup.one
 #align add_subgroup.has_zero AddSubgroup.zero
+-/
 
+#print Subgroup.inv /-
 /-- A subgroup of a group inherits an inverse. -/
 @[to_additive "A `add_subgroup` of a `add_group` inherits an inverse."]
 instance inv : Inv H :=
   ⟨fun a => ⟨a⁻¹, H.inv_mem a.2⟩⟩
 #align subgroup.has_inv Subgroup.inv
 #align add_subgroup.has_neg AddSubgroup.neg
+-/
 
+#print Subgroup.div /-
 /-- A subgroup of a group inherits a division -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits a subtraction."]
 instance div : Div H :=
   ⟨fun a b => ⟨a / b, H.div_mem a.2 b.2⟩⟩
 #align subgroup.has_div Subgroup.div
 #align add_subgroup.has_sub AddSubgroup.sub
+-/
 
+#print AddSubgroup.nsmul /-
 /-- An `add_subgroup` of an `add_group` inherits a natural scaling. -/
 instance AddSubgroup.nsmul {G} [AddGroup G] {H : AddSubgroup G} : SMul ℕ H :=
   ⟨fun n a => ⟨n • a, H.nsmul_mem a.2 n⟩⟩
 #align add_subgroup.has_nsmul AddSubgroup.nsmul
+-/
 
+#print Subgroup.npow /-
 /-- A subgroup of a group inherits a natural power -/
 @[to_additive]
 instance npow : Pow H ℕ :=
   ⟨fun a n => ⟨a ^ n, H.pow_mem a.2 n⟩⟩
 #align subgroup.has_npow Subgroup.npow
 #align add_subgroup.has_nsmul AddSubgroup.nsmul
+-/
 
+#print AddSubgroup.zsmul /-
 /-- An `add_subgroup` of an `add_group` inherits an integer scaling. -/
 instance AddSubgroup.zsmul {G} [AddGroup G] {H : AddSubgroup G} : SMul ℤ H :=
   ⟨fun n a => ⟨n • a, H.zsmul_mem a.2 n⟩⟩
 #align add_subgroup.has_zsmul AddSubgroup.zsmul
+-/
 
+#print Subgroup.zpow /-
 /-- A subgroup of a group inherits an integer power -/
 @[to_additive]
 instance zpow : Pow H ℤ :=
   ⟨fun a n => ⟨a ^ n, H.zpow_mem a.2 n⟩⟩
 #align subgroup.has_zpow Subgroup.zpow
 #align add_subgroup.has_zsmul AddSubgroup.zsmul
+-/
 
+#print Subgroup.coe_mul /-
 @[simp, norm_cast, to_additive]
 theorem coe_mul (x y : H) : (↑(x * y) : G) = ↑x * ↑y :=
   rfl
 #align subgroup.coe_mul Subgroup.coe_mul
 #align add_subgroup.coe_add AddSubgroup.coe_add
+-/
 
+#print Subgroup.coe_one /-
 @[simp, norm_cast, to_additive]
 theorem coe_one : ((1 : H) : G) = 1 :=
   rfl
 #align subgroup.coe_one Subgroup.coe_one
 #align add_subgroup.coe_zero AddSubgroup.coe_zero
+-/
 
+#print Subgroup.coe_inv /-
 @[simp, norm_cast, to_additive]
 theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : G) :=
   rfl
 #align subgroup.coe_inv Subgroup.coe_inv
 #align add_subgroup.coe_neg AddSubgroup.coe_neg
+-/
 
+#print Subgroup.coe_div /-
 @[simp, norm_cast, to_additive]
 theorem coe_div (x y : H) : (↑(x / y) : G) = ↑x / ↑y :=
   rfl
 #align subgroup.coe_div Subgroup.coe_div
 #align add_subgroup.coe_sub AddSubgroup.coe_sub
+-/
 
+#print Subgroup.coe_mk /-
 @[simp, norm_cast, to_additive]
 theorem coe_mk (x : G) (hx : x ∈ H) : ((⟨x, hx⟩ : H) : G) = x :=
   rfl
 #align subgroup.coe_mk Subgroup.coe_mk
 #align add_subgroup.coe_mk AddSubgroup.coe_mk
+-/
 
+#print Subgroup.coe_pow /-
 @[simp, norm_cast, to_additive]
 theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = x ^ n :=
   rfl
 #align subgroup.coe_pow Subgroup.coe_pow
 #align add_subgroup.coe_nsmul AddSubgroup.coe_nsmul
+-/
 
+#print Subgroup.coe_zpow /-
 @[simp, norm_cast, to_additive]
 theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
   rfl
 #align subgroup.coe_zpow Subgroup.coe_zpow
 #align add_subgroup.coe_zsmul AddSubgroup.coe_zsmul
+-/
 
+#print Subgroup.mk_eq_one_iff /-
 @[simp, to_additive]
 theorem mk_eq_one_iff {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 :=
   show (⟨g, h⟩ : H) = (⟨1, H.one_mem⟩ : H) ↔ g = 1 by simp
 #align subgroup.mk_eq_one_iff Subgroup.mk_eq_one_iff
 #align add_subgroup.mk_eq_zero_iff AddSubgroup.mk_eq_zero_iff
+-/
 
+#print Subgroup.toGroup /-
 /-- A subgroup of a group inherits a group structure. -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits an `add_group` structure."]
 instance toGroup {G : Type _} [Group G] (H : Subgroup G) : Group H :=
@@ -781,7 +888,9 @@ instance toGroup {G : Type _} [Group G] (H : Subgroup G) : Group H :=
     (fun _ _ => rfl) fun _ _ => rfl
 #align subgroup.to_group Subgroup.toGroup
 #align add_subgroup.to_add_group AddSubgroup.toAddGroup
+-/
 
+#print Subgroup.toCommGroup /-
 /-- A subgroup of a `comm_group` is a `comm_group`. -/
 @[to_additive "An `add_subgroup` of an `add_comm_group` is an `add_comm_group`."]
 instance toCommGroup {G : Type _} [CommGroup G] (H : Subgroup G) : CommGroup H :=
@@ -789,7 +898,9 @@ instance toCommGroup {G : Type _} [CommGroup G] (H : Subgroup G) : CommGroup H :
     (fun _ _ => rfl) fun _ _ => rfl
 #align subgroup.to_comm_group Subgroup.toCommGroup
 #align add_subgroup.to_add_comm_group AddSubgroup.toAddCommGroup
+-/
 
+#print Subgroup.toOrderedCommGroup /-
 /-- A subgroup of an `ordered_comm_group` is an `ordered_comm_group`. -/
 @[to_additive "An `add_subgroup` of an `add_ordered_comm_group` is an `add_ordered_comm_group`."]
 instance toOrderedCommGroup {G : Type _} [OrderedCommGroup G] (H : Subgroup G) :
@@ -798,7 +909,9 @@ instance toOrderedCommGroup {G : Type _} [OrderedCommGroup G] (H : Subgroup G) :
     (fun _ _ => rfl) fun _ _ => rfl
 #align subgroup.to_ordered_comm_group Subgroup.toOrderedCommGroup
 #align add_subgroup.to_ordered_add_comm_group AddSubgroup.toOrderedAddCommGroup
+-/
 
+#print Subgroup.toLinearOrderedCommGroup /-
 /-- A subgroup of a `linear_ordered_comm_group` is a `linear_ordered_comm_group`. -/
 @[to_additive
       "An `add_subgroup` of a `linear_ordered_add_comm_group` is a\n  `linear_ordered_add_comm_group`."]
@@ -808,57 +921,73 @@ instance toLinearOrderedCommGroup {G : Type _} [LinearOrderedCommGroup G] (H : S
     (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
 #align subgroup.to_linear_ordered_comm_group Subgroup.toLinearOrderedCommGroup
 #align add_subgroup.to_linear_ordered_add_comm_group AddSubgroup.toLinearOrderedAddCommGroup
+-/
 
+#print Subgroup.subtype /-
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an `add_subgroup` of `add_group` `G` to `G`."]
 protected def subtype : H →* G :=
   ⟨coe, rfl, fun _ _ => rfl⟩
 #align subgroup.subtype Subgroup.subtype
 #align add_subgroup.subtype AddSubgroup.subtype
+-/
 
+#print Subgroup.coeSubtype /-
 @[simp, to_additive]
 theorem coeSubtype : ⇑H.Subtype = coe :=
   rfl
 #align subgroup.coe_subtype Subgroup.coeSubtype
 #align add_subgroup.coe_subtype AddSubgroup.coeSubtype
+-/
 
+#print Subgroup.subtype_injective /-
 @[to_additive]
 theorem subtype_injective : Injective (Subgroup.subtype H) :=
   Subtype.coe_injective
 #align subgroup.subtype_injective Subgroup.subtype_injective
 #align add_subgroup.subtype_injective AddSubgroup.subtype_injective
+-/
 
+#print Subgroup.inclusion /-
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
 @[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
 def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
   MonoidHom.mk' (fun x => ⟨x, h x.Prop⟩) fun ⟨a, ha⟩ ⟨b, hb⟩ => rfl
 #align subgroup.inclusion Subgroup.inclusion
 #align add_subgroup.inclusion AddSubgroup.inclusion
+-/
 
+#print Subgroup.coe_inclusion /-
 @[simp, to_additive]
 theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by
   cases a; simp only [inclusion, coe_mk, MonoidHom.mk'_apply]
 #align subgroup.coe_inclusion Subgroup.coe_inclusion
 #align add_subgroup.coe_inclusion AddSubgroup.coe_inclusion
+-/
 
+#print Subgroup.inclusion_injective /-
 @[to_additive]
 theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h :=
   Set.inclusion_injective h
 #align subgroup.inclusion_injective Subgroup.inclusion_injective
 #align add_subgroup.inclusion_injective AddSubgroup.inclusion_injective
+-/
 
+#print Subgroup.subtype_comp_inclusion /-
 @[simp, to_additive]
 theorem subtype_comp_inclusion {H K : Subgroup G} (hH : H ≤ K) :
     K.Subtype.comp (inclusion hH) = H.Subtype :=
   rfl
 #align subgroup.subtype_comp_inclusion Subgroup.subtype_comp_inclusion
 #align add_subgroup.subtype_comp_inclusion AddSubgroup.subtype_comp_inclusion
+-/
 
 /-- The subgroup `G` of the group `G`. -/
 @[to_additive "The `add_subgroup G` of the `add_group G`."]
 instance : Top (Subgroup G) :=
   ⟨{ (⊤ : Submonoid G) with inv_mem' := fun _ _ => Set.mem_univ _ }⟩
 
+#print Subgroup.topEquiv /-
 /-- The top subgroup is isomorphic to the group.
 
 This is the group version of `submonoid.top_equiv`. -/
@@ -869,6 +998,7 @@ def topEquiv : (⊤ : Subgroup G) ≃* G :=
   Submonoid.topEquiv
 #align subgroup.top_equiv Subgroup.topEquiv
 #align add_subgroup.top_equiv AddSubgroup.topEquiv
+-/
 
 /-- The trivial subgroup `{1}` of an group `G`. -/
 @[to_additive "The trivial `add_subgroup` `{0}` of an `add_group` `G`."]
@@ -879,52 +1009,67 @@ instance : Bot (Subgroup G) :=
 instance : Inhabited (Subgroup G) :=
   ⟨⊥⟩
 
+#print Subgroup.mem_bot /-
 @[simp, to_additive]
 theorem mem_bot {x : G} : x ∈ (⊥ : Subgroup G) ↔ x = 1 :=
   Iff.rfl
 #align subgroup.mem_bot Subgroup.mem_bot
 #align add_subgroup.mem_bot AddSubgroup.mem_bot
+-/
 
+#print Subgroup.mem_top /-
 @[simp, to_additive]
 theorem mem_top (x : G) : x ∈ (⊤ : Subgroup G) :=
   Set.mem_univ x
 #align subgroup.mem_top Subgroup.mem_top
 #align add_subgroup.mem_top AddSubgroup.mem_top
+-/
 
+#print Subgroup.coe_top /-
 @[simp, to_additive]
 theorem coe_top : ((⊤ : Subgroup G) : Set G) = Set.univ :=
   rfl
 #align subgroup.coe_top Subgroup.coe_top
 #align add_subgroup.coe_top AddSubgroup.coe_top
+-/
 
+#print Subgroup.coe_bot /-
 @[simp, to_additive]
 theorem coe_bot : ((⊥ : Subgroup G) : Set G) = {1} :=
   rfl
 #align subgroup.coe_bot Subgroup.coe_bot
 #align add_subgroup.coe_bot AddSubgroup.coe_bot
+-/
 
 @[to_additive]
 instance : Unique (⊥ : Subgroup G) :=
   ⟨⟨1⟩, fun g => Subtype.ext g.2⟩
 
+#print Subgroup.top_toSubmonoid /-
 @[simp, to_additive]
 theorem top_toSubmonoid : (⊤ : Subgroup G).toSubmonoid = ⊤ :=
   rfl
 #align subgroup.top_to_submonoid Subgroup.top_toSubmonoid
 #align add_subgroup.top_to_add_submonoid AddSubgroup.top_toAddSubmonoid
+-/
 
+#print Subgroup.bot_toSubmonoid /-
 @[simp, to_additive]
 theorem bot_toSubmonoid : (⊥ : Subgroup G).toSubmonoid = ⊥ :=
   rfl
 #align subgroup.bot_to_submonoid Subgroup.bot_toSubmonoid
 #align add_subgroup.bot_to_add_submonoid AddSubgroup.bot_toAddSubmonoid
+-/
 
+#print Subgroup.eq_bot_iff_forall /-
 @[to_additive]
 theorem eq_bot_iff_forall : H = ⊥ ↔ ∀ x ∈ H, x = (1 : G) :=
   toSubmonoid_injective.eq_iff.symm.trans <| Submonoid.eq_bot_iff_forall _
 #align subgroup.eq_bot_iff_forall Subgroup.eq_bot_iff_forall
 #align add_subgroup.eq_bot_iff_forall AddSubgroup.eq_bot_iff_forall
+-/
 
+#print Subgroup.eq_bot_of_subsingleton /-
 @[to_additive]
 theorem eq_bot_of_subsingleton [Subsingleton H] : H = ⊥ :=
   by
@@ -933,13 +1078,17 @@ theorem eq_bot_of_subsingleton [Subsingleton H] : H = ⊥ :=
   rw [← Subgroup.coe_mk H y hy, Subsingleton.elim (⟨y, hy⟩ : H) 1, Subgroup.coe_one]
 #align subgroup.eq_bot_of_subsingleton Subgroup.eq_bot_of_subsingleton
 #align add_subgroup.eq_bot_of_subsingleton AddSubgroup.eq_bot_of_subsingleton
+-/
 
+#print Subgroup.coe_eq_univ /-
 @[to_additive]
 theorem coe_eq_univ {H : Subgroup G} : (H : Set G) = Set.univ ↔ H = ⊤ :=
   (SetLike.ext'_iff.trans (by rfl)).symm
 #align subgroup.coe_eq_univ Subgroup.coe_eq_univ
 #align add_subgroup.coe_eq_univ AddSubgroup.coe_eq_univ
+-/
 
+#print Subgroup.coe_eq_singleton /-
 @[to_additive]
 theorem coe_eq_singleton {H : Subgroup G} : (∃ g : G, (H : Set G) = {g}) ↔ H = ⊥ :=
   ⟨fun ⟨g, hg⟩ =>
@@ -948,13 +1097,17 @@ theorem coe_eq_singleton {H : Subgroup G} : (∃ g : G, (H : Set G) = {g}) ↔ H
     fun h => ⟨1, SetLike.ext'_iff.mp h⟩⟩
 #align subgroup.coe_eq_singleton Subgroup.coe_eq_singleton
 #align add_subgroup.coe_eq_singleton AddSubgroup.coe_eq_singleton
+-/
 
+#print Subgroup.nontrivial_iff_exists_ne_one /-
 @[to_additive]
 theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x ∈ H, x ≠ (1 : G) :=
   Subtype.nontrivial_iff_exists_ne (fun x => x ∈ H) (1 : H)
 #align subgroup.nontrivial_iff_exists_ne_one Subgroup.nontrivial_iff_exists_ne_one
 #align add_subgroup.nontrivial_iff_exists_ne_zero AddSubgroup.nontrivial_iff_exists_ne_zero
+-/
 
+#print Subgroup.bot_or_nontrivial /-
 /-- A subgroup is either the trivial subgroup or nontrivial. -/
 @[to_additive "A subgroup is either the trivial subgroup or nontrivial."]
 theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
@@ -967,7 +1120,9 @@ theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
     simpa only [nontrivial_iff_exists_ne_one]
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
+-/
 
+#print Subgroup.bot_or_exists_ne_one /-
 /-- A subgroup is either the trivial subgroup or contains a non-identity element. -/
 @[to_additive "A subgroup is either the trivial subgroup or contains a nonzero element."]
 theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (1 : G) :=
@@ -976,6 +1131,7 @@ theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (
   rw [nontrivial_iff_exists_ne_one]
 #align subgroup.bot_or_exists_ne_one Subgroup.bot_or_exists_ne_one
 #align add_subgroup.bot_or_exists_ne_zero AddSubgroup.bot_or_exists_ne_zero
+-/
 
 /-- The inf of two subgroups is their intersection. -/
 @[to_additive "The inf of two `add_subgroups`s is their intersection."]
@@ -984,17 +1140,21 @@ instance : Inf (Subgroup G) :=
     { H₁.toSubmonoid ⊓ H₂.toSubmonoid with
       inv_mem' := fun _ ⟨hx, hx'⟩ => ⟨H₁.inv_mem hx, H₂.inv_mem hx'⟩ }⟩
 
+#print Subgroup.coe_inf /-
 @[simp, to_additive]
 theorem coe_inf (p p' : Subgroup G) : ((p ⊓ p' : Subgroup G) : Set G) = p ∩ p' :=
   rfl
 #align subgroup.coe_inf Subgroup.coe_inf
 #align add_subgroup.coe_inf AddSubgroup.coe_inf
+-/
 
+#print Subgroup.mem_inf /-
 @[simp, to_additive]
 theorem mem_inf {p p' : Subgroup G} {x : G} : x ∈ p ⊓ p' ↔ x ∈ p ∧ x ∈ p' :=
   Iff.rfl
 #align subgroup.mem_inf Subgroup.mem_inf
 #align add_subgroup.mem_inf AddSubgroup.mem_inf
+-/
 
 @[to_additive]
 instance : InfSet (Subgroup G) :=
@@ -1003,29 +1163,37 @@ instance : InfSet (Subgroup G) :=
       inv_mem' := fun x hx =>
         Set.mem_biInter fun i h => i.inv_mem (by apply Set.mem_iInter₂.1 hx i h) }⟩
 
+#print Subgroup.coe_sInf /-
 @[simp, norm_cast, to_additive]
 theorem coe_sInf (H : Set (Subgroup G)) : ((sInf H : Subgroup G) : Set G) = ⋂ s ∈ H, ↑s :=
   rfl
 #align subgroup.coe_Inf Subgroup.coe_sInf
 #align add_subgroup.coe_Inf AddSubgroup.coe_sInf
+-/
 
+#print Subgroup.mem_sInf /-
 @[simp, to_additive]
 theorem mem_sInf {S : Set (Subgroup G)} {x : G} : x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p :=
   Set.mem_iInter₂
 #align subgroup.mem_Inf Subgroup.mem_sInf
 #align add_subgroup.mem_Inf AddSubgroup.mem_sInf
+-/
 
+#print Subgroup.mem_iInf /-
 @[to_additive]
 theorem mem_iInf {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
   simp only [iInf, mem_Inf, Set.forall_range_iff]
 #align subgroup.mem_infi Subgroup.mem_iInf
 #align add_subgroup.mem_infi AddSubgroup.mem_iInf
+-/
 
+#print Subgroup.coe_iInf /-
 @[simp, norm_cast, to_additive]
 theorem coe_iInf {ι : Sort _} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
   simp only [iInf, coe_Inf, Set.biInter_range]
 #align subgroup.coe_infi Subgroup.coe_iInf
 #align add_subgroup.coe_infi AddSubgroup.coe_iInf
+-/
 
 /-- Subgroups of a group form a complete lattice. -/
 @[to_additive "The `add_subgroup`s of an `add_group` form a complete lattice."]
@@ -1043,37 +1211,47 @@ instance : CompleteLattice (Subgroup G) :=
     inf_le_left := fun a b x => And.left
     inf_le_right := fun a b x => And.right }
 
+#print Subgroup.mem_sup_left /-
 @[to_additive]
 theorem mem_sup_left {S T : Subgroup G} : ∀ {x : G}, x ∈ S → x ∈ S ⊔ T :=
   show S ≤ S ⊔ T from le_sup_left
 #align subgroup.mem_sup_left Subgroup.mem_sup_left
 #align add_subgroup.mem_sup_left AddSubgroup.mem_sup_left
+-/
 
+#print Subgroup.mem_sup_right /-
 @[to_additive]
 theorem mem_sup_right {S T : Subgroup G} : ∀ {x : G}, x ∈ T → x ∈ S ⊔ T :=
   show T ≤ S ⊔ T from le_sup_right
 #align subgroup.mem_sup_right Subgroup.mem_sup_right
 #align add_subgroup.mem_sup_right AddSubgroup.mem_sup_right
+-/
 
+#print Subgroup.mul_mem_sup /-
 @[to_additive]
 theorem mul_mem_sup {S T : Subgroup G} {x y : G} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
   (S ⊔ T).mul_mem (mem_sup_left hx) (mem_sup_right hy)
 #align subgroup.mul_mem_sup Subgroup.mul_mem_sup
 #align add_subgroup.add_mem_sup AddSubgroup.add_mem_sup
+-/
 
+#print Subgroup.mem_iSup_of_mem /-
 @[to_additive]
 theorem mem_iSup_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
     ∀ {x : G}, x ∈ S i → x ∈ iSup S :=
   show S i ≤ iSup S from le_iSup _ _
 #align subgroup.mem_supr_of_mem Subgroup.mem_iSup_of_mem
 #align add_subgroup.mem_supr_of_mem AddSubgroup.mem_iSup_of_mem
+-/
 
+#print Subgroup.mem_sSup_of_mem /-
 @[to_additive]
 theorem mem_sSup_of_mem {S : Set (Subgroup G)} {s : Subgroup G} (hs : s ∈ S) :
     ∀ {x : G}, x ∈ s → x ∈ sSup S :=
   show s ≤ sSup S from le_sSup hs
 #align subgroup.mem_Sup_of_mem Subgroup.mem_sSup_of_mem
 #align add_subgroup.mem_Sup_of_mem AddSubgroup.mem_sSup_of_mem
+-/
 
 #print Subgroup.subsingleton_iff /-
 @[simp, to_additive]
@@ -1106,11 +1284,13 @@ instance [Subsingleton G] : Unique (Subgroup G) :=
 instance [Nontrivial G] : Nontrivial (Subgroup G) :=
   nontrivial_iff.mpr ‹_›
 
+#print Subgroup.eq_top_iff' /-
 @[to_additive]
 theorem eq_top_iff' : H = ⊤ ↔ ∀ x : G, x ∈ H :=
   eq_top_iff.trans ⟨fun h m => h <| mem_top m, fun h m _ => h m⟩
 #align subgroup.eq_top_iff' Subgroup.eq_top_iff'
 #align add_subgroup.eq_top_iff' AddSubgroup.eq_top_iff'
+-/
 
 #print Subgroup.closure /-
 /-- The `subgroup` generated by a set. -/
@@ -1123,39 +1303,50 @@ def closure (k : Set G) : Subgroup G :=
 
 variable {k : Set G}
 
+#print Subgroup.mem_closure /-
 @[to_additive]
 theorem mem_closure {x : G} : x ∈ closure k ↔ ∀ K : Subgroup G, k ⊆ K → x ∈ K :=
   mem_sInf
 #align subgroup.mem_closure Subgroup.mem_closure
 #align add_subgroup.mem_closure AddSubgroup.mem_closure
+-/
 
+#print Subgroup.subset_closure /-
 /-- The subgroup generated by a set includes the set. -/
 @[simp, to_additive "The `add_subgroup` generated by a set includes the set."]
 theorem subset_closure : k ⊆ closure k := fun x hx => mem_closure.2 fun K hK => hK hx
 #align subgroup.subset_closure Subgroup.subset_closure
 #align add_subgroup.subset_closure AddSubgroup.subset_closure
+-/
 
+#print Subgroup.not_mem_of_not_mem_closure /-
 @[to_additive]
 theorem not_mem_of_not_mem_closure {P : G} (hP : P ∉ closure k) : P ∉ k := fun h =>
   hP (subset_closure h)
 #align subgroup.not_mem_of_not_mem_closure Subgroup.not_mem_of_not_mem_closure
 #align add_subgroup.not_mem_of_not_mem_closure AddSubgroup.not_mem_of_not_mem_closure
+-/
 
 open Set
 
+#print Subgroup.closure_le /-
 /-- A subgroup `K` includes `closure k` if and only if it includes `k`. -/
 @[simp, to_additive "An additive subgroup `K` includes `closure k` if and only if it includes `k`"]
 theorem closure_le : closure k ≤ K ↔ k ⊆ K :=
   ⟨Subset.trans subset_closure, fun h => sInf_le h⟩
 #align subgroup.closure_le Subgroup.closure_le
 #align add_subgroup.closure_le AddSubgroup.closure_le
+-/
 
+#print Subgroup.closure_eq_of_le /-
 @[to_additive]
 theorem closure_eq_of_le (h₁ : k ⊆ K) (h₂ : K ≤ closure k) : closure k = K :=
   le_antisymm ((closure_le <| K).2 h₁) h₂
 #align subgroup.closure_eq_of_le Subgroup.closure_eq_of_le
 #align add_subgroup.closure_eq_of_le AddSubgroup.closure_eq_of_le
+-/
 
+#print Subgroup.closure_induction /-
 /-- An induction principle for closure membership. If `p` holds for `1` and all elements of `k`, and
 is preserved under multiplication and inverse, then `p` holds for all elements of the closure
 of `k`. -/
@@ -1167,7 +1358,9 @@ theorem closure_induction {p : G → Prop} {x} (h : x ∈ closure k) (Hk : ∀ x
   (@closure_le _ _ ⟨p, Hmul, H1, Hinv⟩ _).2 Hk h
 #align subgroup.closure_induction Subgroup.closure_induction
 #align add_subgroup.closure_induction AddSubgroup.closure_induction
+-/
 
+#print Subgroup.closure_induction' /-
 /-- A dependent version of `subgroup.closure_induction`.  -/
 @[elab_as_elim, to_additive "A dependent version of `add_subgroup.closure_induction`. "]
 theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
@@ -1181,7 +1374,9 @@ theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
       (fun x y ⟨hx', hx⟩ ⟨hy', hy⟩ => ⟨_, Hmul _ _ _ _ hx hy⟩) fun x ⟨hx', hx⟩ => ⟨_, Hinv _ _ hx⟩
 #align subgroup.closure_induction' Subgroup.closure_induction'
 #align add_subgroup.closure_induction' AddSubgroup.closure_induction'
+-/
 
+#print Subgroup.closure_induction₂ /-
 /-- An induction principle for closure membership for predicates with two arguments. -/
 @[elab_as_elim,
   to_additive
@@ -1196,7 +1391,9 @@ theorem closure_induction₂ {p : G → G → Prop} {x} {y : G} (hx : x ∈ clos
     (H1_left y) (fun z z' => Hmul_left z z' y) fun z => Hinv_left z y
 #align subgroup.closure_induction₂ Subgroup.closure_induction₂
 #align add_subgroup.closure_induction₂ AddSubgroup.closure_induction₂
+-/
 
+#print Subgroup.closure_closure_coe_preimage /-
 @[simp, to_additive]
 theorem closure_closure_coe_preimage {k : Set G} : closure ((coe : closure k → G) ⁻¹' k) = ⊤ :=
   eq_top_iff.2 fun x =>
@@ -1209,7 +1406,9 @@ theorem closure_closure_coe_preimage {k : Set G} : closure ((coe : closure k →
       · exact inv_mem
 #align subgroup.closure_closure_coe_preimage Subgroup.closure_closure_coe_preimage
 #align add_subgroup.closure_closure_coe_preimage AddSubgroup.closure_closure_coe_preimage
+-/
 
+#print Subgroup.closureCommGroupOfComm /-
 /-- If all the elements of a set `s` commute, then `closure s` is a commutative group. -/
 @[to_additive
       "If all the elements of a set `s` commute, then `closure s` is an additive\ncommutative group."]
@@ -1230,9 +1429,11 @@ def closureCommGroupOfComm {k : Set G} (hcomm : ∀ x ∈ k, ∀ y ∈ k, x * y
           rw [mul_inv_eq_iff_eq_mul, mul_assoc, h, ← mul_assoc, inv_mul_self, one_mul] }
 #align subgroup.closure_comm_group_of_comm Subgroup.closureCommGroupOfComm
 #align add_subgroup.closure_add_comm_group_of_comm AddSubgroup.closureAddCommGroupOfComm
+-/
 
 variable (G)
 
+#print Subgroup.gi /-
 /-- `closure` forms a Galois insertion with the coercion to set. -/
 @[to_additive "`closure` forms a Galois insertion with the coercion to set."]
 protected def gi : GaloisInsertion (@closure G _) coe
@@ -1243,9 +1444,11 @@ protected def gi : GaloisInsertion (@closure G _) coe
   choice_eq s h := rfl
 #align subgroup.gi Subgroup.gi
 #align add_subgroup.gi AddSubgroup.gi
+-/
 
 variable {G}
 
+#print Subgroup.closure_mono /-
 /-- Subgroup closure of a set is monotone in its argument: if `h ⊆ k`,
 then `closure h ≤ closure k`. -/
 @[to_additive
@@ -1254,50 +1457,66 @@ theorem closure_mono ⦃h k : Set G⦄ (h' : h ⊆ k) : closure h ≤ closure k
   (Subgroup.gi G).gc.monotone_l h'
 #align subgroup.closure_mono Subgroup.closure_mono
 #align add_subgroup.closure_mono AddSubgroup.closure_mono
+-/
 
+#print Subgroup.closure_eq /-
 /-- Closure of a subgroup `K` equals `K`. -/
 @[simp, to_additive "Additive closure of an additive subgroup `K` equals `K`"]
 theorem closure_eq : closure (K : Set G) = K :=
   (Subgroup.gi G).l_u_eq K
 #align subgroup.closure_eq Subgroup.closure_eq
 #align add_subgroup.closure_eq AddSubgroup.closure_eq
+-/
 
+#print Subgroup.closure_empty /-
 @[simp, to_additive]
 theorem closure_empty : closure (∅ : Set G) = ⊥ :=
   (Subgroup.gi G).gc.l_bot
 #align subgroup.closure_empty Subgroup.closure_empty
 #align add_subgroup.closure_empty AddSubgroup.closure_empty
+-/
 
+#print Subgroup.closure_univ /-
 @[simp, to_additive]
 theorem closure_univ : closure (univ : Set G) = ⊤ :=
   @coe_top G _ ▸ closure_eq ⊤
 #align subgroup.closure_univ Subgroup.closure_univ
 #align add_subgroup.closure_univ AddSubgroup.closure_univ
+-/
 
+#print Subgroup.closure_union /-
 @[to_additive]
 theorem closure_union (s t : Set G) : closure (s ∪ t) = closure s ⊔ closure t :=
   (Subgroup.gi G).gc.l_sup
 #align subgroup.closure_union Subgroup.closure_union
 #align add_subgroup.closure_union AddSubgroup.closure_union
+-/
 
+#print Subgroup.closure_iUnion /-
 @[to_additive]
 theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, closure (s i) :=
   (Subgroup.gi G).gc.l_iSup
 #align subgroup.closure_Union Subgroup.closure_iUnion
 #align add_subgroup.closure_Union AddSubgroup.closure_iUnion
+-/
 
+#print Subgroup.closure_eq_bot_iff /-
 @[to_additive]
 theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} := by
   rw [← le_bot_iff]; exact closure_le _
 #align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iff
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
+-/
 
+#print Subgroup.iSup_eq_closure /-
 @[to_additive]
 theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
     (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
 #align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
 #align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
+-/
 
+#print Subgroup.mem_closure_singleton /-
 /-- The subgroup generated by an element of a group equals the set of integer number powers of
     the element. -/
 @[to_additive
@@ -1317,26 +1536,34 @@ theorem mem_closure_singleton {x y : G} : y ∈ closure ({x} : Set G) ↔ ∃ n
   exact ⟨-n, zpow_neg x n⟩
 #align subgroup.mem_closure_singleton Subgroup.mem_closure_singleton
 #align add_subgroup.mem_closure_singleton AddSubgroup.mem_closure_singleton
+-/
 
+#print Subgroup.closure_singleton_one /-
 @[to_additive]
 theorem closure_singleton_one : closure ({1} : Set G) = ⊥ := by
   simp [eq_bot_iff_forall, mem_closure_singleton]
 #align subgroup.closure_singleton_one Subgroup.closure_singleton_one
 #align add_subgroup.closure_singleton_zero AddSubgroup.closure_singleton_zero
+-/
 
+#print Subgroup.le_closure_toSubmonoid /-
 @[to_additive]
 theorem le_closure_toSubmonoid (S : Set G) : Submonoid.closure S ≤ (closure S).toSubmonoid :=
   Submonoid.closure_le.2 subset_closure
 #align subgroup.le_closure_to_submonoid Subgroup.le_closure_toSubmonoid
 #align add_subgroup.le_closure_to_add_submonoid AddSubgroup.le_closure_toAddSubmonoid
+-/
 
+#print Subgroup.closure_eq_top_of_mclosure_eq_top /-
 @[to_additive]
 theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S = ⊤) :
     closure S = ⊤ :=
   (eq_top_iff' _).2 fun x => le_closure_toSubmonoid _ <| h.symm ▸ trivial
 #align subgroup.closure_eq_top_of_mclosure_eq_top Subgroup.closure_eq_top_of_mclosure_eq_top
 #align add_subgroup.closure_eq_top_of_mclosure_eq_top AddSubgroup.closure_eq_top_of_mclosure_eq_top
+-/
 
+#print Subgroup.mem_iSup_of_directed /-
 @[to_additive]
 theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
     {x : G} : x ∈ (iSup K : Subgroup G) ↔ ∃ i, x ∈ K i :=
@@ -1352,14 +1579,18 @@ theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (h
   rintro _ ⟨i, hi⟩; exact ⟨i, inv_mem hi⟩
 #align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directed
 #align add_subgroup.mem_supr_of_directed AddSubgroup.mem_iSup_of_directed
+-/
 
+#print Subgroup.coe_iSup_of_directed /-
 @[to_additive]
 theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subgroup G) : Set G) = ⋃ i, ↑(S i) :=
   Set.ext fun x => by simp [mem_supr_of_directed hS]
 #align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directed
 #align add_subgroup.coe_supr_of_directed AddSubgroup.coe_iSup_of_directed
+-/
 
+#print Subgroup.mem_sSup_of_directedOn /-
 @[to_additive]
 theorem mem_sSup_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
     {x : G} : x ∈ sSup K ↔ ∃ s ∈ K, x ∈ s :=
@@ -1368,6 +1599,7 @@ theorem mem_sSup_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : D
   simp only [sSup_eq_iSup', mem_supr_of_directed hK.directed_coe, SetCoe.exists, Subtype.coe_mk]
 #align subgroup.mem_Sup_of_directed_on Subgroup.mem_sSup_of_directedOn
 #align add_subgroup.mem_Sup_of_directed_on AddSubgroup.mem_sSup_of_directedOn
+-/
 
 variable {N : Type _} [Group N] {P : Type _} [Group P]
 
@@ -1383,23 +1615,29 @@ def comap {N : Type _} [Group N] (f : G →* N) (H : Subgroup N) : Subgroup G :=
 #align add_subgroup.comap AddSubgroup.comap
 -/
 
+#print Subgroup.coe_comap /-
 @[simp, to_additive]
 theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻¹' K :=
   rfl
 #align subgroup.coe_comap Subgroup.coe_comap
 #align add_subgroup.coe_comap AddSubgroup.coe_comap
+-/
 
+#print Subgroup.mem_comap /-
 @[simp, to_additive]
 theorem mem_comap {K : Subgroup N} {f : G →* N} {x : G} : x ∈ K.comap f ↔ f x ∈ K :=
   Iff.rfl
 #align subgroup.mem_comap Subgroup.mem_comap
 #align add_subgroup.mem_comap AddSubgroup.mem_comap
+-/
 
+#print Subgroup.comap_mono /-
 @[to_additive]
 theorem comap_mono {f : G →* N} {K K' : Subgroup N} : K ≤ K' → comap f K ≤ comap f K' :=
   preimage_mono
 #align subgroup.comap_mono Subgroup.comap_mono
 #align add_subgroup.comap_mono AddSubgroup.comap_mono
+-/
 
 #print Subgroup.comap_comap /-
 @[to_additive]
@@ -1429,35 +1667,45 @@ def map (f : G →* N) (H : Subgroup G) : Subgroup N :=
 #align add_subgroup.map AddSubgroup.map
 -/
 
+#print Subgroup.coe_map /-
 @[simp, to_additive]
 theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
   rfl
 #align subgroup.coe_map Subgroup.coe_map
 #align add_subgroup.coe_map AddSubgroup.coe_map
+-/
 
+#print Subgroup.mem_map /-
 @[simp, to_additive]
 theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃ x ∈ K, f x = y :=
   mem_image_iff_bex
 #align subgroup.mem_map Subgroup.mem_map
 #align add_subgroup.mem_map AddSubgroup.mem_map
+-/
 
+#print Subgroup.mem_map_of_mem /-
 @[to_additive]
 theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) : f x ∈ K.map f :=
   mem_image_of_mem f hx
 #align subgroup.mem_map_of_mem Subgroup.mem_map_of_mem
 #align add_subgroup.mem_map_of_mem AddSubgroup.mem_map_of_mem
+-/
 
+#print Subgroup.apply_coe_mem_map /-
 @[to_additive]
 theorem apply_coe_mem_map (f : G →* N) (K : Subgroup G) (x : K) : f x ∈ K.map f :=
   mem_map_of_mem f x.Prop
 #align subgroup.apply_coe_mem_map Subgroup.apply_coe_mem_map
 #align add_subgroup.apply_coe_mem_map AddSubgroup.apply_coe_mem_map
+-/
 
+#print Subgroup.map_mono /-
 @[to_additive]
 theorem map_mono {f : G →* N} {K K' : Subgroup G} : K ≤ K' → map f K ≤ map f K' :=
   image_subset _
 #align subgroup.map_mono Subgroup.map_mono
 #align add_subgroup.map_mono AddSubgroup.map_mono
+-/
 
 #print Subgroup.map_id /-
 @[simp, to_additive]
@@ -1467,46 +1715,59 @@ theorem map_id : K.map (MonoidHom.id G) = K :=
 #align add_subgroup.map_id AddSubgroup.map_id
 -/
 
+#print Subgroup.map_map /-
 @[to_additive]
 theorem map_map (g : N →* P) (f : G →* N) : (K.map f).map g = K.map (g.comp f) :=
   SetLike.coe_injective <| image_image _ _ _
 #align subgroup.map_map Subgroup.map_map
 #align add_subgroup.map_map AddSubgroup.map_map
+-/
 
+#print Subgroup.map_one_eq_bot /-
 @[simp, to_additive]
 theorem map_one_eq_bot : K.map (1 : G →* N) = ⊥ :=
   eq_bot_iff.mpr <| by rintro x ⟨y, _, rfl⟩; simp
 #align subgroup.map_one_eq_bot Subgroup.map_one_eq_bot
 #align add_subgroup.map_zero_eq_bot AddSubgroup.map_zero_eq_bot
+-/
 
+#print Subgroup.mem_map_equiv /-
 @[to_additive]
 theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
     x ∈ K.map f.toMonoidHom ↔ f.symm x ∈ K :=
   @Set.mem_image_equiv _ _ (↑K) f.toEquiv x
 #align subgroup.mem_map_equiv Subgroup.mem_map_equiv
 #align add_subgroup.mem_map_equiv AddSubgroup.mem_map_equiv
+-/
 
+#print Subgroup.mem_map_iff_mem /-
 @[to_additive]
 theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup G} {x : G} :
     f x ∈ K.map f ↔ x ∈ K :=
   hf.mem_set_image
 #align subgroup.mem_map_iff_mem Subgroup.mem_map_iff_mem
 #align add_subgroup.mem_map_iff_mem AddSubgroup.mem_map_iff_mem
+-/
 
+#print Subgroup.map_equiv_eq_comap_symm /-
 @[to_additive]
 theorem map_equiv_eq_comap_symm (f : G ≃* N) (K : Subgroup G) :
     K.map f.toMonoidHom = K.comap f.symm.toMonoidHom :=
   SetLike.coe_injective (f.toEquiv.image_eq_preimage K)
 #align subgroup.map_equiv_eq_comap_symm Subgroup.map_equiv_eq_comap_symm
 #align add_subgroup.map_equiv_eq_comap_symm AddSubgroup.map_equiv_eq_comap_symm
+-/
 
+#print Subgroup.comap_equiv_eq_map_symm /-
 @[to_additive]
 theorem comap_equiv_eq_map_symm (f : N ≃* G) (K : Subgroup G) :
     K.comap f.toMonoidHom = K.map f.symm.toMonoidHom :=
   (map_equiv_eq_comap_symm f.symm K).symm
 #align subgroup.comap_equiv_eq_map_symm Subgroup.comap_equiv_eq_map_symm
 #align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm
+-/
 
+#print Subgroup.map_symm_eq_iff_map_eq /-
 @[to_additive]
 theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} : H.map ↑e.symm = K ↔ K.map ↑e = H :=
   by
@@ -1519,66 +1780,86 @@ theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} : H.map ↑e.symm
       MulEquiv.coe_monoidHom_refl, map_id]
 #align subgroup.map_symm_eq_iff_map_eq Subgroup.map_symm_eq_iff_map_eq
 #align add_subgroup.map_symm_eq_iff_map_eq AddSubgroup.map_symm_eq_iff_map_eq
+-/
 
+#print Subgroup.map_le_iff_le_comap /-
 @[to_additive]
 theorem map_le_iff_le_comap {f : G →* N} {K : Subgroup G} {H : Subgroup N} :
     K.map f ≤ H ↔ K ≤ H.comap f :=
   image_subset_iff
 #align subgroup.map_le_iff_le_comap Subgroup.map_le_iff_le_comap
 #align add_subgroup.map_le_iff_le_comap AddSubgroup.map_le_iff_le_comap
+-/
 
+#print Subgroup.gc_map_comap /-
 @[to_additive]
 theorem gc_map_comap (f : G →* N) : GaloisConnection (map f) (comap f) := fun _ _ =>
   map_le_iff_le_comap
 #align subgroup.gc_map_comap Subgroup.gc_map_comap
 #align add_subgroup.gc_map_comap AddSubgroup.gc_map_comap
+-/
 
+#print Subgroup.map_sup /-
 @[to_additive]
 theorem map_sup (H K : Subgroup G) (f : G →* N) : (H ⊔ K).map f = H.map f ⊔ K.map f :=
   (gc_map_comap f).l_sup
 #align subgroup.map_sup Subgroup.map_sup
 #align add_subgroup.map_sup AddSubgroup.map_sup
+-/
 
+#print Subgroup.map_iSup /-
 @[to_additive]
 theorem map_iSup {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
     (iSup s).map f = ⨆ i, (s i).map f :=
   (gc_map_comap f).l_iSup
 #align subgroup.map_supr Subgroup.map_iSup
 #align add_subgroup.map_supr AddSubgroup.map_iSup
+-/
 
+#print Subgroup.comap_sup_comap_le /-
 @[to_additive]
 theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
     comap f H ⊔ comap f K ≤ comap f (H ⊔ K) :=
   Monotone.le_map_sup (fun _ _ => comap_mono) H K
 #align subgroup.comap_sup_comap_le Subgroup.comap_sup_comap_le
 #align add_subgroup.comap_sup_comap_le AddSubgroup.comap_sup_comap_le
+-/
 
+#print Subgroup.iSup_comap_le /-
 @[to_additive]
 theorem iSup_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
     (⨆ i, (s i).comap f) ≤ (iSup s).comap f :=
   Monotone.le_map_iSup fun _ _ => comap_mono
 #align subgroup.supr_comap_le Subgroup.iSup_comap_le
 #align add_subgroup.supr_comap_le AddSubgroup.iSup_comap_le
+-/
 
+#print Subgroup.comap_inf /-
 @[to_additive]
 theorem comap_inf (H K : Subgroup N) (f : G →* N) : (H ⊓ K).comap f = H.comap f ⊓ K.comap f :=
   (gc_map_comap f).u_inf
 #align subgroup.comap_inf Subgroup.comap_inf
 #align add_subgroup.comap_inf AddSubgroup.comap_inf
+-/
 
+#print Subgroup.comap_iInf /-
 @[to_additive]
 theorem comap_iInf {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
     (iInf s).comap f = ⨅ i, (s i).comap f :=
   (gc_map_comap f).u_iInf
 #align subgroup.comap_infi Subgroup.comap_iInf
 #align add_subgroup.comap_infi AddSubgroup.comap_iInf
+-/
 
+#print Subgroup.map_inf_le /-
 @[to_additive]
 theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f H ⊓ map f K :=
   le_inf (map_mono inf_le_left) (map_mono inf_le_right)
 #align subgroup.map_inf_le Subgroup.map_inf_le
 #align add_subgroup.map_inf_le AddSubgroup.map_inf_le
+-/
 
+#print Subgroup.map_inf_eq /-
 @[to_additive]
 theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f) :
     map f (H ⊓ K) = map f H ⊓ map f K :=
@@ -1587,32 +1868,42 @@ theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f)
   simp [Set.image_inter hf]
 #align subgroup.map_inf_eq Subgroup.map_inf_eq
 #align add_subgroup.map_inf_eq AddSubgroup.map_inf_eq
+-/
 
+#print Subgroup.map_bot /-
 @[simp, to_additive]
 theorem map_bot (f : G →* N) : (⊥ : Subgroup G).map f = ⊥ :=
   (gc_map_comap f).l_bot
 #align subgroup.map_bot Subgroup.map_bot
 #align add_subgroup.map_bot AddSubgroup.map_bot
+-/
 
+#print Subgroup.map_top_of_surjective /-
 @[simp, to_additive]
 theorem map_top_of_surjective (f : G →* N) (h : Function.Surjective f) : Subgroup.map f ⊤ = ⊤ := by
   rw [eq_top_iff]; intro x hx; obtain ⟨y, hy⟩ := h x; exact ⟨y, trivial, hy⟩
 #align subgroup.map_top_of_surjective Subgroup.map_top_of_surjective
 #align add_subgroup.map_top_of_surjective AddSubgroup.map_top_of_surjective
+-/
 
+#print Subgroup.comap_top /-
 @[simp, to_additive]
 theorem comap_top (f : G →* N) : (⊤ : Subgroup N).comap f = ⊤ :=
   (gc_map_comap f).u_top
 #align subgroup.comap_top Subgroup.comap_top
 #align add_subgroup.comap_top AddSubgroup.comap_top
+-/
 
+#print Subgroup.subgroupOf /-
 /-- For any subgroups `H` and `K`, view `H ⊓ K` as a subgroup of `K`. -/
 @[to_additive "For any subgroups `H` and `K`, view `H ⊓ K` as a subgroup of `K`."]
 def subgroupOf (H K : Subgroup G) : Subgroup K :=
   H.comap K.Subtype
 #align subgroup.subgroup_of Subgroup.subgroupOf
 #align add_subgroup.add_subgroup_of AddSubgroup.addSubgroupOf
+-/
 
+#print Subgroup.subgroupOfEquivOfLe /-
 /-- If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`. -/
 @[to_additive "If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`.", simps]
 def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K) : H.subgroupOf K ≃* H
@@ -1624,99 +1915,131 @@ def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K)
   map_mul' g h := rfl
 #align subgroup.subgroup_of_equiv_of_le Subgroup.subgroupOfEquivOfLe
 #align add_subgroup.add_subgroup_of_equiv_of_le AddSubgroup.addSubgroupOfEquivOfLe
+-/
 
+#print Subgroup.comap_subtype /-
 @[simp, to_additive]
 theorem comap_subtype (H K : Subgroup G) : H.comap K.Subtype = H.subgroupOf K :=
   rfl
 #align subgroup.comap_subtype Subgroup.comap_subtype
 #align add_subgroup.comap_subtype AddSubgroup.comap_subtype
+-/
 
+#print Subgroup.comap_inclusion_subgroupOf /-
 @[simp, to_additive]
 theorem comap_inclusion_subgroupOf {K₁ K₂ : Subgroup G} (h : K₁ ≤ K₂) (H : Subgroup G) :
     (H.subgroupOf K₂).comap (inclusion h) = H.subgroupOf K₁ :=
   rfl
 #align subgroup.comap_inclusion_subgroup_of Subgroup.comap_inclusion_subgroupOf
 #align add_subgroup.comap_inclusion_add_subgroup_of AddSubgroup.comap_inclusion_addSubgroupOf
+-/
 
+#print Subgroup.coe_subgroupOf /-
 @[to_additive]
 theorem coe_subgroupOf (H K : Subgroup G) : (H.subgroupOf K : Set K) = K.Subtype ⁻¹' H :=
   rfl
 #align subgroup.coe_subgroup_of Subgroup.coe_subgroupOf
 #align add_subgroup.coe_add_subgroup_of AddSubgroup.coe_addSubgroupOf
+-/
 
+#print Subgroup.mem_subgroupOf /-
 @[to_additive]
 theorem mem_subgroupOf {H K : Subgroup G} {h : K} : h ∈ H.subgroupOf K ↔ (h : G) ∈ H :=
   Iff.rfl
 #align subgroup.mem_subgroup_of Subgroup.mem_subgroupOf
 #align add_subgroup.mem_add_subgroup_of AddSubgroup.mem_addSubgroupOf
+-/
 
+#print Subgroup.subgroupOf_map_subtype /-
 @[simp, to_additive]
 theorem subgroupOf_map_subtype (H K : Subgroup G) : (H.subgroupOf K).map K.Subtype = H ⊓ K :=
   SetLike.ext' <| Subtype.image_preimage_coe _ _
 #align subgroup.subgroup_of_map_subtype Subgroup.subgroupOf_map_subtype
 #align add_subgroup.add_subgroup_of_map_subtype AddSubgroup.addSubgroupOf_map_subtype
+-/
 
+#print Subgroup.bot_subgroupOf /-
 @[simp, to_additive]
 theorem bot_subgroupOf : (⊥ : Subgroup G).subgroupOf H = ⊥ :=
   Eq.symm (Subgroup.ext fun g => Subtype.ext_iff)
 #align subgroup.bot_subgroup_of Subgroup.bot_subgroupOf
 #align add_subgroup.bot_add_subgroup_of AddSubgroup.bot_addSubgroupOf
+-/
 
+#print Subgroup.top_subgroupOf /-
 @[simp, to_additive]
 theorem top_subgroupOf : (⊤ : Subgroup G).subgroupOf H = ⊤ :=
   rfl
 #align subgroup.top_subgroup_of Subgroup.top_subgroupOf
 #align add_subgroup.top_add_subgroup_of AddSubgroup.top_addSubgroupOf
+-/
 
+#print Subgroup.subgroupOf_bot_eq_bot /-
 @[to_additive]
 theorem subgroupOf_bot_eq_bot : H.subgroupOf ⊥ = ⊥ :=
   Subsingleton.elim _ _
 #align subgroup.subgroup_of_bot_eq_bot Subgroup.subgroupOf_bot_eq_bot
 #align add_subgroup.add_subgroup_of_bot_eq_bot AddSubgroup.addSubgroupOf_bot_eq_bot
+-/
 
+#print Subgroup.subgroupOf_bot_eq_top /-
 @[to_additive]
 theorem subgroupOf_bot_eq_top : H.subgroupOf ⊥ = ⊤ :=
   Subsingleton.elim _ _
 #align subgroup.subgroup_of_bot_eq_top Subgroup.subgroupOf_bot_eq_top
 #align add_subgroup.add_subgroup_of_bot_eq_top AddSubgroup.addSubgroupOf_bot_eq_top
+-/
 
+#print Subgroup.subgroupOf_self /-
 @[simp, to_additive]
 theorem subgroupOf_self : H.subgroupOf H = ⊤ :=
   top_unique fun g hg => g.2
 #align subgroup.subgroup_of_self Subgroup.subgroupOf_self
 #align add_subgroup.add_subgroup_of_self AddSubgroup.addSubgroupOf_self
+-/
 
+#print Subgroup.subgroupOf_inj /-
 @[simp, to_additive]
 theorem subgroupOf_inj {H₁ H₂ K : Subgroup G} :
     H₁.subgroupOf K = H₂.subgroupOf K ↔ H₁ ⊓ K = H₂ ⊓ K := by
   simpa only [SetLike.ext_iff, mem_inf, mem_subgroup_of, and_congr_left_iff] using Subtype.forall
 #align subgroup.subgroup_of_inj Subgroup.subgroupOf_inj
 #align add_subgroup.add_subgroup_of_inj AddSubgroup.addSubgroupOf_inj
+-/
 
+#print Subgroup.inf_subgroupOf_right /-
 @[simp, to_additive]
 theorem inf_subgroupOf_right (H K : Subgroup G) : (H ⊓ K).subgroupOf K = H.subgroupOf K :=
   subgroupOf_inj.2 inf_right_idem
 #align subgroup.inf_subgroup_of_right Subgroup.inf_subgroupOf_right
 #align add_subgroup.inf_add_subgroup_of_right AddSubgroup.inf_addSubgroupOf_right
+-/
 
+#print Subgroup.inf_subgroupOf_left /-
 @[simp, to_additive]
 theorem inf_subgroupOf_left (H K : Subgroup G) : (K ⊓ H).subgroupOf K = H.subgroupOf K := by
   rw [inf_comm, inf_subgroup_of_right]
 #align subgroup.inf_subgroup_of_left Subgroup.inf_subgroupOf_left
 #align add_subgroup.inf_add_subgroup_of_left AddSubgroup.inf_addSubgroupOf_left
+-/
 
+#print Subgroup.subgroupOf_eq_bot /-
 @[simp, to_additive]
 theorem subgroupOf_eq_bot {H K : Subgroup G} : H.subgroupOf K = ⊥ ↔ Disjoint H K := by
   rw [disjoint_iff, ← bot_subgroup_of, subgroup_of_inj, bot_inf_eq]
 #align subgroup.subgroup_of_eq_bot Subgroup.subgroupOf_eq_bot
 #align add_subgroup.add_subgroup_of_eq_bot AddSubgroup.addSubgroupOf_eq_bot
+-/
 
+#print Subgroup.subgroupOf_eq_top /-
 @[simp, to_additive]
 theorem subgroupOf_eq_top {H K : Subgroup G} : H.subgroupOf K = ⊤ ↔ K ≤ H := by
   rw [← top_subgroup_of, subgroup_of_inj, top_inf_eq, inf_eq_right]
 #align subgroup.subgroup_of_eq_top Subgroup.subgroupOf_eq_top
 #align add_subgroup.add_subgroup_of_eq_top AddSubgroup.addSubgroupOf_eq_top
+-/
 
+#print Subgroup.prod /-
 /-- Given `subgroup`s `H`, `K` of groups `G`, `N` respectively, `H × K` as a subgroup of `G × N`. -/
 @[to_additive Prod
       "Given `add_subgroup`s `H`, `K` of `add_group`s `A`, `B` respectively, `H × K`\nas an `add_subgroup` of `A × B`."]
@@ -1725,82 +2048,108 @@ def prod (H : Subgroup G) (K : Subgroup N) : Subgroup (G × N) :=
     inv_mem' := fun _ hx => ⟨H.inv_mem' hx.1, K.inv_mem' hx.2⟩ }
 #align subgroup.prod Subgroup.prod
 #align add_subgroup.prod AddSubgroup.prod
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Subgroup.coe_prod /-
 @[to_additive coe_prod]
 theorem coe_prod (H : Subgroup G) (K : Subgroup N) : (H.Prod K : Set (G × N)) = H ×ˢ K :=
   rfl
 #align subgroup.coe_prod Subgroup.coe_prod
 #align add_subgroup.coe_prod AddSubgroup.coe_prod
+-/
 
+#print Subgroup.mem_prod /-
 @[to_additive mem_prod]
 theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K ↔ p.1 ∈ H ∧ p.2 ∈ K :=
   Iff.rfl
 #align subgroup.mem_prod Subgroup.mem_prod
 #align add_subgroup.mem_prod AddSubgroup.mem_prod
+-/
 
+#print Subgroup.prod_mono /-
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
   fun s s' hs t t' ht => Set.prod_mono hs ht
 #align subgroup.prod_mono Subgroup.prod_mono
 #align add_subgroup.prod_mono AddSubgroup.prod_mono
+-/
 
+#print Subgroup.prod_mono_right /-
 @[to_additive prod_mono_right]
 theorem prod_mono_right (K : Subgroup G) : Monotone fun t : Subgroup N => K.Prod t :=
   prod_mono (le_refl K)
 #align subgroup.prod_mono_right Subgroup.prod_mono_right
 #align add_subgroup.prod_mono_right AddSubgroup.prod_mono_right
+-/
 
+#print Subgroup.prod_mono_left /-
 @[to_additive prod_mono_left]
 theorem prod_mono_left (H : Subgroup N) : Monotone fun K : Subgroup G => K.Prod H := fun s₁ s₂ hs =>
   prod_mono hs (le_refl H)
 #align subgroup.prod_mono_left Subgroup.prod_mono_left
 #align add_subgroup.prod_mono_left AddSubgroup.prod_mono_left
+-/
 
+#print Subgroup.prod_top /-
 @[to_additive prod_top]
 theorem prod_top (K : Subgroup G) : K.Prod (⊤ : Subgroup N) = K.comap (MonoidHom.fst G N) :=
   ext fun x => by simp [mem_prod, MonoidHom.coe_fst]
 #align subgroup.prod_top Subgroup.prod_top
 #align add_subgroup.prod_top AddSubgroup.prod_top
+-/
 
+#print Subgroup.top_prod /-
 @[to_additive top_prod]
 theorem top_prod (H : Subgroup N) : (⊤ : Subgroup G).Prod H = H.comap (MonoidHom.snd G N) :=
   ext fun x => by simp [mem_prod, MonoidHom.coe_snd]
 #align subgroup.top_prod Subgroup.top_prod
 #align add_subgroup.top_prod AddSubgroup.top_prod
+-/
 
+#print Subgroup.top_prod_top /-
 @[simp, to_additive top_prod_top]
 theorem top_prod_top : (⊤ : Subgroup G).Prod (⊤ : Subgroup N) = ⊤ :=
   (top_prod _).trans <| comap_top _
 #align subgroup.top_prod_top Subgroup.top_prod_top
 #align add_subgroup.top_prod_top AddSubgroup.top_prod_top
+-/
 
+#print Subgroup.bot_prod_bot /-
 @[to_additive]
 theorem bot_prod_bot : (⊥ : Subgroup G).Prod (⊥ : Subgroup N) = ⊥ :=
   SetLike.coe_injective <| by simp [coe_prod, Prod.one_eq_mk]
 #align subgroup.bot_prod_bot Subgroup.bot_prod_bot
 #align add_subgroup.bot_sum_bot AddSubgroup.bot_sum_bot
+-/
 
+#print Subgroup.le_prod_iff /-
 @[to_additive le_prod_iff]
 theorem le_prod_iff {H : Subgroup G} {K : Subgroup N} {J : Subgroup (G × N)} :
     J ≤ H.Prod K ↔ map (MonoidHom.fst G N) J ≤ H ∧ map (MonoidHom.snd G N) J ≤ K := by
   simpa only [← Subgroup.toSubmonoid_le] using Submonoid.le_prod_iff
 #align subgroup.le_prod_iff Subgroup.le_prod_iff
 #align add_subgroup.le_prod_iff AddSubgroup.le_prod_iff
+-/
 
+#print Subgroup.prod_le_iff /-
 @[to_additive prod_le_iff]
 theorem prod_le_iff {H : Subgroup G} {K : Subgroup N} {J : Subgroup (G × N)} :
     H.Prod K ≤ J ↔ map (MonoidHom.inl G N) H ≤ J ∧ map (MonoidHom.inr G N) K ≤ J := by
   simpa only [← Subgroup.toSubmonoid_le] using Submonoid.prod_le_iff
 #align subgroup.prod_le_iff Subgroup.prod_le_iff
 #align add_subgroup.prod_le_iff AddSubgroup.prod_le_iff
+-/
 
+#print Subgroup.prod_eq_bot_iff /-
 @[simp, to_additive prod_eq_bot_iff]
 theorem prod_eq_bot_iff {H : Subgroup G} {K : Subgroup N} : H.Prod K = ⊥ ↔ H = ⊥ ∧ K = ⊥ := by
   simpa only [← Subgroup.toSubmonoid_eq] using Submonoid.prod_eq_bot_iff
 #align subgroup.prod_eq_bot_iff Subgroup.prod_eq_bot_iff
 #align add_subgroup.prod_eq_bot_iff AddSubgroup.prod_eq_bot_iff
+-/
 
+#print Subgroup.prodEquiv /-
 /-- Product of subgroups is isomorphic to their product as groups. -/
 @[to_additive prod_equiv
       "Product of additive subgroups is isomorphic to their product\nas additive groups"]
@@ -1808,6 +2157,7 @@ def prodEquiv (H : Subgroup G) (K : Subgroup N) : H.Prod K ≃* H × K :=
   { Equiv.Set.prod ↑H ↑K with map_mul' := fun x y => rfl }
 #align subgroup.prod_equiv Subgroup.prodEquiv
 #align add_subgroup.prod_equiv AddSubgroup.prodEquiv
+-/
 
 section Pi
 
@@ -1844,39 +2194,50 @@ def pi (I : Set η) (H : ∀ i, Subgroup (f i)) : Subgroup (∀ i, f i) :=
 #align add_subgroup.pi AddSubgroup.pi
 -/
 
+#print Subgroup.coe_pi /-
 @[to_additive]
 theorem coe_pi (I : Set η) (H : ∀ i, Subgroup (f i)) :
     (pi I H : Set (∀ i, f i)) = Set.pi I fun i => (H i : Set (f i)) :=
   rfl
 #align subgroup.coe_pi Subgroup.coe_pi
 #align add_subgroup.coe_pi AddSubgroup.coe_pi
+-/
 
+#print Subgroup.mem_pi /-
 @[to_additive]
 theorem mem_pi (I : Set η) {H : ∀ i, Subgroup (f i)} {p : ∀ i, f i} :
     p ∈ pi I H ↔ ∀ i : η, i ∈ I → p i ∈ H i :=
   Iff.rfl
 #align subgroup.mem_pi Subgroup.mem_pi
 #align add_subgroup.mem_pi AddSubgroup.mem_pi
+-/
 
+#print Subgroup.pi_top /-
 @[to_additive]
 theorem pi_top (I : Set η) : (pi I fun i => (⊤ : Subgroup (f i))) = ⊤ :=
   ext fun x => by simp [mem_pi]
 #align subgroup.pi_top Subgroup.pi_top
 #align add_subgroup.pi_top AddSubgroup.pi_top
+-/
 
+#print Subgroup.pi_empty /-
 @[to_additive]
 theorem pi_empty (H : ∀ i, Subgroup (f i)) : pi ∅ H = ⊤ :=
   ext fun x => by simp [mem_pi]
 #align subgroup.pi_empty Subgroup.pi_empty
 #align add_subgroup.pi_empty AddSubgroup.pi_empty
+-/
 
+#print Subgroup.pi_bot /-
 @[to_additive]
 theorem pi_bot : (pi Set.univ fun i => (⊥ : Subgroup (f i))) = ⊥ :=
   (eq_bot_iff_forall _).mpr fun p hp => by simp only [mem_pi, mem_bot] at *; ext j;
     exact hp j trivial
 #align subgroup.pi_bot Subgroup.pi_bot
 #align add_subgroup.pi_bot AddSubgroup.pi_bot
+-/
 
+#print Subgroup.le_pi_iff /-
 @[to_additive]
 theorem le_pi_iff {I : Set η} {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i, f i)} :
     J ≤ pi I H ↔ ∀ i : η, i ∈ I → map (Pi.evalMonoidHom f i) J ≤ H i :=
@@ -1886,7 +2247,9 @@ theorem le_pi_iff {I : Set η} {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i,
   · intro h x hx i hi; refine' h i hi ⟨_, hx, rfl⟩
 #align subgroup.le_pi_iff Subgroup.le_pi_iff
 #align add_subgroup.le_pi_iff AddSubgroup.le_pi_iff
+-/
 
+#print Subgroup.mulSingle_mem_pi /-
 @[simp, to_additive]
 theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i)} (i : η) (x : f i) :
     Pi.mulSingle i x ∈ pi I H ↔ i ∈ I → x ∈ H i :=
@@ -1899,7 +2262,9 @@ theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i
     · simp [HEq, one_mem]
 #align subgroup.mul_single_mem_pi Subgroup.mulSingle_mem_pi
 #align add_subgroup.single_mem_pi AddSubgroup.single_mem_pi
+-/
 
+#print Subgroup.pi_eq_bot_iff /-
 @[to_additive]
 theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀ i, H i = ⊥ := by
   classical
@@ -1912,6 +2277,7 @@ theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀
   · exact fun h x hx => funext fun i => h _ _ (hx i trivial)
 #align subgroup.pi_eq_bot_iff Subgroup.pi_eq_bot_iff
 #align add_subgroup.pi_eq_bot_iff AddSubgroup.pi_eq_bot_iff
+-/
 
 end Pi
 
@@ -1929,7 +2295,7 @@ end Subgroup
 namespace AddSubgroup
 
 #print AddSubgroup.Normal /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
 /-- An add_subgroup is normal if whenever `n ∈ H`, then `g + n - g ∈ H` for every `g : G` -/
 structure Normal (H : AddSubgroup A) : Prop where
   conj_mem : ∀ n, n ∈ H → ∀ g : A, g + n + -g ∈ H
@@ -1958,6 +2324,7 @@ namespace Normal
 
 variable (nH : H.Normal)
 
+#print Subgroup.Normal.mem_comm /-
 @[to_additive]
 theorem mem_comm {a b : G} (h : a * b ∈ H) : b * a ∈ H :=
   by
@@ -1965,12 +2332,15 @@ theorem mem_comm {a b : G} (h : a * b ∈ H) : b * a ∈ H :=
   simpa
 #align subgroup.normal.mem_comm Subgroup.Normal.mem_comm
 #align add_subgroup.normal.mem_comm AddSubgroup.Normal.mem_comm
+-/
 
+#print Subgroup.Normal.mem_comm_iff /-
 @[to_additive]
 theorem mem_comm_iff {a b : G} : a * b ∈ H ↔ b * a ∈ H :=
   ⟨nH.mem_comm, nH.mem_comm⟩
 #align subgroup.normal.mem_comm_iff Subgroup.Normal.mem_comm_iff
 #align add_subgroup.normal.mem_comm_iff AddSubgroup.Normal.mem_comm_iff
+-/
 
 end Normal
 
@@ -2022,12 +2392,15 @@ namespace Subgroup
 
 variable {H K : Subgroup G}
 
+#print Subgroup.characteristic_iff_comap_eq /-
 @[to_additive]
 theorem characteristic_iff_comap_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.comap ϕ.toMonoidHom = H :=
   ⟨Characteristic.fixed, Characteristic.mk⟩
 #align subgroup.characteristic_iff_comap_eq Subgroup.characteristic_iff_comap_eq
 #align add_subgroup.characteristic_iff_comap_eq AddSubgroup.characteristic_iff_comap_eq
+-/
 
+#print Subgroup.characteristic_iff_comap_le /-
 @[to_additive]
 theorem characteristic_iff_comap_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.comap ϕ.toMonoidHom ≤ H :=
   characteristic_iff_comap_eq.trans
@@ -2035,7 +2408,9 @@ theorem characteristic_iff_comap_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.
       le_antisymm (h ϕ) fun g hg => h ϕ.symm ((congr_arg (· ∈ H) (ϕ.symm_apply_apply g)).mpr hg)⟩
 #align subgroup.characteristic_iff_comap_le Subgroup.characteristic_iff_comap_le
 #align add_subgroup.characteristic_iff_comap_le AddSubgroup.characteristic_iff_comap_le
+-/
 
+#print Subgroup.characteristic_iff_le_comap /-
 @[to_additive]
 theorem characteristic_iff_le_comap : H.Characteristic ↔ ∀ ϕ : G ≃* G, H ≤ H.comap ϕ.toMonoidHom :=
   characteristic_iff_comap_eq.trans
@@ -2043,7 +2418,9 @@ theorem characteristic_iff_le_comap : H.Characteristic ↔ ∀ ϕ : G ≃* G, H
       le_antisymm (fun g hg => (congr_arg (· ∈ H) (ϕ.symm_apply_apply g)).mp (h ϕ.symm hg)) (h ϕ)⟩
 #align subgroup.characteristic_iff_le_comap Subgroup.characteristic_iff_le_comap
 #align add_subgroup.characteristic_iff_le_comap AddSubgroup.characteristic_iff_le_comap
+-/
 
+#print Subgroup.characteristic_iff_map_eq /-
 @[to_additive]
 theorem characteristic_iff_map_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.map ϕ.toMonoidHom = H :=
   by
@@ -2051,7 +2428,9 @@ theorem characteristic_iff_map_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.ma
   exact characteristic_iff_comap_eq.trans ⟨fun h ϕ => h ϕ.symm, fun h ϕ => h ϕ.symm⟩
 #align subgroup.characteristic_iff_map_eq Subgroup.characteristic_iff_map_eq
 #align add_subgroup.characteristic_iff_map_eq AddSubgroup.characteristic_iff_map_eq
+-/
 
+#print Subgroup.characteristic_iff_map_le /-
 @[to_additive]
 theorem characteristic_iff_map_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.map ϕ.toMonoidHom ≤ H :=
   by
@@ -2059,7 +2438,9 @@ theorem characteristic_iff_map_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.ma
   exact characteristic_iff_comap_le.trans ⟨fun h ϕ => h ϕ.symm, fun h ϕ => h ϕ.symm⟩
 #align subgroup.characteristic_iff_map_le Subgroup.characteristic_iff_map_le
 #align add_subgroup.characteristic_iff_map_le AddSubgroup.characteristic_iff_map_le
+-/
 
+#print Subgroup.characteristic_iff_le_map /-
 @[to_additive]
 theorem characteristic_iff_le_map : H.Characteristic ↔ ∀ ϕ : G ≃* G, H ≤ H.map ϕ.toMonoidHom :=
   by
@@ -2067,18 +2448,23 @@ theorem characteristic_iff_le_map : H.Characteristic ↔ ∀ ϕ : G ≃* G, H 
   exact characteristic_iff_le_comap.trans ⟨fun h ϕ => h ϕ.symm, fun h ϕ => h ϕ.symm⟩
 #align subgroup.characteristic_iff_le_map Subgroup.characteristic_iff_le_map
 #align add_subgroup.characteristic_iff_le_map AddSubgroup.characteristic_iff_le_map
+-/
 
+#print Subgroup.botCharacteristic /-
 @[to_additive]
 instance botCharacteristic : Characteristic (⊥ : Subgroup G) :=
   characteristic_iff_le_map.mpr fun ϕ => bot_le
 #align subgroup.bot_characteristic Subgroup.botCharacteristic
 #align add_subgroup.bot_characteristic AddSubgroup.botCharacteristic
+-/
 
+#print Subgroup.topCharacteristic /-
 @[to_additive]
 instance topCharacteristic : Characteristic (⊤ : Subgroup G) :=
   characteristic_iff_map_le.mpr fun ϕ => le_top
 #align subgroup.top_characteristic Subgroup.topCharacteristic
 #align add_subgroup.top_characteristic AddSubgroup.topCharacteristic
+-/
 
 variable (G)
 
@@ -2094,11 +2480,13 @@ def center : Subgroup G :=
 #align add_subgroup.center AddSubgroup.center
 -/
 
+#print Subgroup.coe_center /-
 @[to_additive]
 theorem coe_center : ↑(center G) = Set.center G :=
   rfl
 #align subgroup.coe_center Subgroup.coe_center
 #align add_subgroup.coe_center AddSubgroup.coe_center
+-/
 
 #print Subgroup.center_toSubmonoid /-
 @[simp, to_additive]
@@ -2110,15 +2498,19 @@ theorem center_toSubmonoid : (center G).toSubmonoid = Submonoid.center G :=
 
 variable {G}
 
+#print Subgroup.mem_center_iff /-
 @[to_additive]
 theorem mem_center_iff {z : G} : z ∈ center G ↔ ∀ g, g * z = z * g :=
   Iff.rfl
 #align subgroup.mem_center_iff Subgroup.mem_center_iff
 #align add_subgroup.mem_center_iff AddSubgroup.mem_center_iff
+-/
 
+#print Subgroup.decidableMemCenter /-
 instance decidableMemCenter (z : G) [Decidable (∀ g, g * z = z * g)] : Decidable (z ∈ center G) :=
   decidable_of_iff' _ mem_center_iff
 #align subgroup.decidable_mem_center Subgroup.decidableMemCenter
+-/
 
 #print Subgroup.centerCharacteristic /-
 @[to_additive]
@@ -2131,14 +2523,18 @@ instance centerCharacteristic : (center G).Characteristic :=
 #align add_subgroup.center_characteristic AddSubgroup.centerCharacteristic
 -/
 
+#print CommGroup.center_eq_top /-
 theorem CommGroup.center_eq_top {G : Type _} [CommGroup G] : center G = ⊤ := by rw [eq_top_iff'];
   intro x y; exact mul_comm y x
 #align comm_group.center_eq_top CommGroup.center_eq_top
+-/
 
+#print Group.commGroupOfCenterEqTop /-
 /-- A group is commutative if the center is the whole group -/
 def Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
   { (_ : Group G) with mul_comm := by rw [eq_top_iff'] at h ; intro x y; exact h y x }
 #align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTop
+-/
 
 variable {G} (H)
 
@@ -2177,37 +2573,48 @@ def setNormalizer (S : Set G) : Subgroup G
 
 variable {H}
 
+#print Subgroup.mem_normalizer_iff /-
 @[to_additive]
 theorem mem_normalizer_iff {g : G} : g ∈ H.normalizer ↔ ∀ h, h ∈ H ↔ g * h * g⁻¹ ∈ H :=
   Iff.rfl
 #align subgroup.mem_normalizer_iff Subgroup.mem_normalizer_iff
 #align add_subgroup.mem_normalizer_iff AddSubgroup.mem_normalizer_iff
+-/
 
+#print Subgroup.mem_normalizer_iff'' /-
 @[to_additive]
 theorem mem_normalizer_iff'' {g : G} : g ∈ H.normalizer ↔ ∀ h : G, h ∈ H ↔ g⁻¹ * h * g ∈ H := by
   rw [← inv_mem_iff, mem_normalizer_iff, inv_inv]
 #align subgroup.mem_normalizer_iff'' Subgroup.mem_normalizer_iff''
 #align add_subgroup.mem_normalizer_iff'' AddSubgroup.mem_normalizer_iff''
+-/
 
+#print Subgroup.mem_normalizer_iff' /-
 @[to_additive]
 theorem mem_normalizer_iff' {g : G} : g ∈ H.normalizer ↔ ∀ n, n * g ∈ H ↔ g * n ∈ H :=
   ⟨fun h n => by rw [h, mul_assoc, mul_inv_cancel_right], fun h n => by
     rw [mul_assoc, ← h, inv_mul_cancel_right]⟩
 #align subgroup.mem_normalizer_iff' Subgroup.mem_normalizer_iff'
 #align add_subgroup.mem_normalizer_iff' AddSubgroup.mem_normalizer_iff'
+-/
 
+#print Subgroup.le_normalizer /-
 @[to_additive]
 theorem le_normalizer : H ≤ normalizer H := fun x xH n => by
   rw [H.mul_mem_cancel_right (H.inv_mem xH), H.mul_mem_cancel_left xH]
 #align subgroup.le_normalizer Subgroup.le_normalizer
 #align add_subgroup.le_normalizer AddSubgroup.le_normalizer
+-/
 
+#print Subgroup.normal_in_normalizer /-
 @[to_additive]
 instance (priority := 100) normal_in_normalizer : (H.subgroupOf H.normalizer).Normal :=
   ⟨fun x xH g => by simpa using (g.2 x).1 xH⟩
 #align subgroup.normal_in_normalizer Subgroup.normal_in_normalizer
 #align add_subgroup.normal_in_normalizer AddSubgroup.normal_in_normalizer
+-/
 
+#print Subgroup.normalizer_eq_top /-
 @[to_additive]
 theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
   eq_top_iff.trans
@@ -2215,15 +2622,19 @@ theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
       ⟨fun hb => h.conj_mem b hb a, fun hb => by rwa [h.mem_comm_iff, inv_mul_cancel_left] at hb ⟩⟩
 #align subgroup.normalizer_eq_top Subgroup.normalizer_eq_top
 #align add_subgroup.normalizer_eq_top AddSubgroup.normalizer_eq_top
+-/
 
+#print Subgroup.center_le_normalizer /-
 @[to_additive]
 theorem center_le_normalizer : center G ≤ H.normalizer := fun x hx y => by
   simp [← mem_center_iff.mp hx y, mul_assoc]
 #align subgroup.center_le_normalizer Subgroup.center_le_normalizer
 #align add_subgroup.center_le_normalizer AddSubgroup.center_le_normalizer
+-/
 
 open scoped Classical
 
+#print Subgroup.le_normalizer_of_normal /-
 @[to_additive]
 theorem le_normalizer_of_normal [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) : K ≤ H.normalizer :=
   fun x hx y =>
@@ -2232,9 +2643,11 @@ theorem le_normalizer_of_normal [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) :
       hK.conj_mem ⟨x * y * x⁻¹, HK yH⟩ yH ⟨x⁻¹, K.inv_mem hx⟩⟩
 #align subgroup.le_normalizer_of_normal Subgroup.le_normalizer_of_normal
 #align add_subgroup.le_normalizer_of_normal AddSubgroup.le_normalizer_of_normal
+-/
 
 variable {N : Type _} [Group N]
 
+#print Subgroup.le_normalizer_comap /-
 /-- The preimage of the normalizer is contained in the normalizer of the preimage. -/
 @[to_additive "The preimage of the normalizer is contained in the normalizer of the preimage."]
 theorem le_normalizer_comap (f : N →* G) : H.normalizer.comap f ≤ (H.comap f).normalizer := fun x =>
@@ -2244,7 +2657,9 @@ theorem le_normalizer_comap (f : N →* G) : H.normalizer.comap f ≤ (H.comap f
   simp [h (f n)]
 #align subgroup.le_normalizer_comap Subgroup.le_normalizer_comap
 #align add_subgroup.le_normalizer_comap AddSubgroup.le_normalizer_comap
+-/
 
+#print Subgroup.le_normalizer_map /-
 /-- The image of the normalizer is contained in the normalizer of the image. -/
 @[to_additive "The image of the normalizer is contained in the normalizer of the image."]
 theorem le_normalizer_map (f : G →* N) : H.normalizer.map f ≤ (H.map f).normalizer := fun _ =>
@@ -2261,6 +2676,7 @@ theorem le_normalizer_map (f : G →* N) : H.normalizer.map f ≤ (H.map f).norm
     simp [hy, hyH, mul_assoc]
 #align subgroup.le_normalizer_map Subgroup.le_normalizer_map
 #align add_subgroup.le_normalizer_map AddSubgroup.le_normalizer_map
+-/
 
 variable (G)
 
@@ -2273,6 +2689,7 @@ def NormalizerCondition :=
 
 variable {G}
 
+#print normalizerCondition_iff_only_full_group_self_normalizing /-
 /-- Alternative phrasing of the normalizer condition: Only the full group is self-normalizing.
 This may be easier to work with, as it avoids inequalities and negations.  -/
 theorem normalizerCondition_iff_only_full_group_self_normalizing :
@@ -2282,14 +2699,17 @@ theorem normalizerCondition_iff_only_full_group_self_normalizing :
   simp only [lt_iff_le_and_ne, le_normalizer, true_and_iff, le_top, Ne.def]
   tauto
 #align normalizer_condition_iff_only_full_group_self_normalizing normalizerCondition_iff_only_full_group_self_normalizing
+-/
 
 variable (H)
 
+#print Subgroup.NormalizerCondition.normal_of_coatom /-
 /-- In a group that satisifes the normalizer condition, every maximal subgroup is normal -/
 theorem NormalizerCondition.normal_of_coatom (hnc : NormalizerCondition G) (hmax : IsCoatom H) :
     H.Normal :=
   normalizer_eq_top.mp (hmax.2 _ (hnc H (lt_top_iff_ne_top.mpr hmax.1)))
 #align subgroup.normalizer_condition.normal_of_coatom Subgroup.NormalizerCondition.normal_of_coatom
+-/
 
 end Normalizer
 
@@ -2309,48 +2729,62 @@ def centralizer : Subgroup G :=
 
 variable {H}
 
+#print Subgroup.mem_centralizer_iff /-
 @[to_additive]
 theorem mem_centralizer_iff {g : G} : g ∈ H.centralizer ↔ ∀ h ∈ H, h * g = g * h :=
   Iff.rfl
 #align subgroup.mem_centralizer_iff Subgroup.mem_centralizer_iff
 #align add_subgroup.mem_centralizer_iff AddSubgroup.mem_centralizer_iff
+-/
 
+#print Subgroup.mem_centralizer_iff_commutator_eq_one /-
 @[to_additive]
 theorem mem_centralizer_iff_commutator_eq_one {g : G} :
     g ∈ H.centralizer ↔ ∀ h ∈ H, h * g * h⁻¹ * g⁻¹ = 1 := by
   simp only [mem_centralizer_iff, mul_inv_eq_iff_eq_mul, one_mul]
 #align subgroup.mem_centralizer_iff_commutator_eq_one Subgroup.mem_centralizer_iff_commutator_eq_one
 #align add_subgroup.mem_centralizer_iff_commutator_eq_zero AddSubgroup.mem_centralizer_iff_commutator_eq_zero
+-/
 
+#print Subgroup.centralizer_top /-
 @[to_additive]
 theorem centralizer_top : centralizer ⊤ = center G :=
   SetLike.ext' (Set.centralizer_univ G)
 #align subgroup.centralizer_top Subgroup.centralizer_top
 #align add_subgroup.centralizer_top AddSubgroup.centralizer_top
+-/
 
+#print Subgroup.le_centralizer_iff /-
 @[to_additive]
 theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
   ⟨fun h x hx y hy => (h hy x hx).symm, fun h x hx y hy => (h hy x hx).symm⟩
 #align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
 #align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
+-/
 
+#print Subgroup.center_le_centralizer /-
 @[to_additive]
 theorem center_le_centralizer (s) : center G ≤ centralizer s :=
   Set.center_subset_centralizer s
 #align subgroup.center_le_centralizer Subgroup.center_le_centralizer
 #align add_subgroup.center_le_centralizer AddSubgroup.center_le_centralizer
+-/
 
+#print Subgroup.centralizer_le /-
 @[to_additive]
 theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
   Submonoid.centralizer_le h
 #align subgroup.centralizer_le Subgroup.centralizer_le
 #align add_subgroup.centralizer_le AddSubgroup.centralizer_le
+-/
 
+#print Subgroup.centralizer_eq_top_iff_subset /-
 @[simp, to_additive]
 theorem centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
   SetLike.ext'_iff.trans Set.centralizer_eq_top_iff_subset
 #align subgroup.centralizer_eq_top_iff_subset Subgroup.centralizer_eq_top_iff_subset
 #align add_subgroup.centralizer_eq_top_iff_subset AddSubgroup.centralizer_eq_top_iff_subset
+-/
 
 #print Subgroup.Centralizer.characteristic /-
 @[to_additive]
@@ -2386,12 +2820,14 @@ attribute [to_additive AddSubgroup.IsCommutative] Subgroup.IsCommutative
 
 attribute [class] AddSubgroup.IsCommutative
 
+#print Subgroup.IsCommutative.commGroup /-
 /-- A commutative subgroup is commutative. -/
 @[to_additive "A commutative subgroup is commutative."]
 instance IsCommutative.commGroup [h : H.IsCommutative] : CommGroup H :=
   { H.toGroup with mul_comm := h.is_comm.comm }
 #align subgroup.is_commutative.comm_group Subgroup.IsCommutative.commGroup
 #align add_subgroup.is_commutative.add_comm_group AddSubgroup.IsCommutative.addCommGroup
+-/
 
 #print Subgroup.center.isCommutative /-
 instance center.isCommutative : (center G).IsCommutative :=
@@ -2410,6 +2846,7 @@ instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommu
 #align add_subgroup.map_is_commutative AddSubgroup.map_isCommutative
 -/
 
+#print Subgroup.comap_injective_isCommutative /-
 @[to_additive]
 theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutative] :
     (H.comap f).IsCommutative :=
@@ -2421,25 +2858,32 @@ theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCo
             hf.eq_iff] at this )⟩⟩
 #align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutative
 #align add_subgroup.comap_injective_is_commutative AddSubgroup.comap_injective_isCommutative
+-/
 
+#print Subgroup.subgroupOf_isCommutative /-
 @[to_additive]
 instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommutative :=
   H.comap_injective_isCommutative Subtype.coe_injective
 #align subgroup.subgroup_of_is_commutative Subgroup.subgroupOf_isCommutative
 #align add_subgroup.add_subgroup_of_is_commutative AddSubgroup.addSubgroupOf_isCommutative
+-/
 
+#print Subgroup.le_centralizer_iff_isCommutative /-
 @[to_additive]
 theorem le_centralizer_iff_isCommutative : K ≤ K.centralizer ↔ K.IsCommutative :=
   ⟨fun h => ⟨⟨fun x y => Subtype.ext (h y.2 x x.2)⟩⟩, fun h x hx y hy =>
     congr_arg coe (h.1.1 ⟨y, hy⟩ ⟨x, hx⟩)⟩
 #align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutative
 #align add_subgroup.le_centralizer_iff_is_commutative AddSubgroup.le_centralizer_iff_isCommutative
+-/
 
+#print Subgroup.le_centralizer /-
 @[to_additive]
 theorem le_centralizer [h : H.IsCommutative] : H ≤ H.centralizer :=
   le_centralizer_iff_isCommutative.mpr h
 #align subgroup.le_centralizer Subgroup.le_centralizer
 #align add_subgroup.le_centralizer AddSubgroup.le_centralizer
+-/
 
 end Subgroup
 
@@ -2455,9 +2899,11 @@ def conjugatesOfSet (s : Set G) : Set G :=
 #align group.conjugates_of_set Group.conjugatesOfSet
 -/
 
+#print Group.mem_conjugatesOfSet_iff /-
 theorem mem_conjugatesOfSet_iff {x : G} : x ∈ conjugatesOfSet s ↔ ∃ a ∈ s, IsConj a x :=
   Set.mem_iUnion₂
 #align group.mem_conjugates_of_set_iff Group.mem_conjugatesOfSet_iff
+-/
 
 #print Group.subset_conjugatesOfSet /-
 theorem subset_conjugatesOfSet : s ⊆ conjugatesOfSet s := fun (x : G) (h : x ∈ s) =>
@@ -2471,16 +2917,21 @@ theorem conjugatesOfSet_mono {s t : Set G} (h : s ⊆ t) : conjugatesOfSet s ⊆
 #align group.conjugates_of_set_mono Group.conjugatesOfSet_mono
 -/
 
+#print Group.conjugates_subset_normal /-
 theorem conjugates_subset_normal {N : Subgroup G} [tn : N.Normal] {a : G} (h : a ∈ N) :
     conjugatesOf a ⊆ N := by rintro a hc; obtain ⟨c, rfl⟩ := isConj_iff.1 hc;
   exact tn.conj_mem a h c
 #align group.conjugates_subset_normal Group.conjugates_subset_normal
+-/
 
+#print Group.conjugatesOfSet_subset /-
 theorem conjugatesOfSet_subset {s : Set G} {N : Subgroup G} [N.Normal] (h : s ⊆ N) :
     conjugatesOfSet s ⊆ N :=
   Set.iUnion₂_subset fun x H => conjugates_subset_normal (h H)
 #align group.conjugates_of_set_subset Group.conjugatesOfSet_subset
+-/
 
+#print Group.conj_mem_conjugatesOfSet /-
 /-- The set of conjugates of `s` is closed under conjugation. -/
 theorem conj_mem_conjugatesOfSet {x c : G} :
     x ∈ conjugatesOfSet s → c * x * c⁻¹ ∈ conjugatesOfSet s := fun H =>
@@ -2488,6 +2939,7 @@ theorem conj_mem_conjugatesOfSet {x c : G} :
   rcases mem_conjugates_of_set_iff.1 H with ⟨a, h₁, h₂⟩
   exact mem_conjugates_of_set_iff.2 ⟨a, h₁, h₂.trans (isConj_iff.2 ⟨c, rfl⟩)⟩
 #align group.conj_mem_conjugates_of_set Group.conj_mem_conjugatesOfSet
+-/
 
 end Group
 
@@ -2505,17 +2957,23 @@ def normalClosure (s : Set G) : Subgroup G :=
 #align subgroup.normal_closure Subgroup.normalClosure
 -/
 
+#print Subgroup.conjugatesOfSet_subset_normalClosure /-
 theorem conjugatesOfSet_subset_normalClosure : conjugatesOfSet s ⊆ normalClosure s :=
   subset_closure
 #align subgroup.conjugates_of_set_subset_normal_closure Subgroup.conjugatesOfSet_subset_normalClosure
+-/
 
+#print Subgroup.subset_normalClosure /-
 theorem subset_normalClosure : s ⊆ normalClosure s :=
   Set.Subset.trans subset_conjugatesOfSet conjugatesOfSet_subset_normalClosure
 #align subgroup.subset_normal_closure Subgroup.subset_normalClosure
+-/
 
+#print Subgroup.le_normalClosure /-
 theorem le_normalClosure {H : Subgroup G} : H ≤ normalClosure ↑H := fun _ h =>
   subset_normalClosure h
 #align subgroup.le_normal_closure Subgroup.le_normalClosure
+-/
 
 #print Subgroup.normalClosure_normal /-
 /-- The normal closure of `s` is a normal subgroup. -/
@@ -2532,6 +2990,7 @@ instance normalClosure_normal : (normalClosure s).Normal :=
 #align subgroup.normal_closure_normal Subgroup.normalClosure_normal
 -/
 
+#print Subgroup.normalClosure_le_normal /-
 /-- The normal closure of `s` is the smallest normal subgroup containing `s`. -/
 theorem normalClosure_le_normal {N : Subgroup G} [N.Normal] (h : s ⊆ N) : normalClosure s ≤ N :=
   by
@@ -2542,14 +3001,19 @@ theorem normalClosure_le_normal {N : Subgroup G} [N.Normal] (h : s ⊆ N) : norm
   · exact mul_mem ihx ihy
   · exact inv_mem ihx
 #align subgroup.normal_closure_le_normal Subgroup.normalClosure_le_normal
+-/
 
+#print Subgroup.normalClosure_subset_iff /-
 theorem normalClosure_subset_iff {N : Subgroup G} [N.Normal] : s ⊆ N ↔ normalClosure s ≤ N :=
   ⟨normalClosure_le_normal, Set.Subset.trans subset_normalClosure⟩
 #align subgroup.normal_closure_subset_iff Subgroup.normalClosure_subset_iff
+-/
 
+#print Subgroup.normalClosure_mono /-
 theorem normalClosure_mono {s t : Set G} (h : s ⊆ t) : normalClosure s ≤ normalClosure t :=
   normalClosure_le_normal (Set.Subset.trans h subset_normalClosure)
 #align subgroup.normal_closure_mono Subgroup.normalClosure_mono
+-/
 
 #print Subgroup.normalClosure_eq_iInf /-
 theorem normalClosure_eq_iInf :
@@ -2574,9 +3038,11 @@ theorem normalClosure_idempotent : normalClosure ↑(normalClosure s) = normalCl
 #align subgroup.normal_closure_idempotent Subgroup.normalClosure_idempotent
 -/
 
+#print Subgroup.closure_le_normalClosure /-
 theorem closure_le_normalClosure {s : Set G} : closure s ≤ normalClosure s := by
   simp only [subset_normal_closure, closure_le]
 #align subgroup.closure_le_normal_closure Subgroup.closure_le_normalClosure
+-/
 
 #print Subgroup.normalClosure_closure_eq_normalClosure /-
 @[simp]
@@ -2598,9 +3064,11 @@ def normalCore (H : Subgroup G) : Subgroup G
 #align subgroup.normal_core Subgroup.normalCore
 -/
 
+#print Subgroup.normalCore_le /-
 theorem normalCore_le (H : Subgroup G) : H.normalCore ≤ H := fun a h => by
   rw [← mul_one a, ← inv_one, ← one_mul a]; exact h 1
 #align subgroup.normal_core_le Subgroup.normalCore_le
+-/
 
 #print Subgroup.normalCore_normal /-
 instance normalCore_normal (H : Subgroup G) : H.normalCore.Normal :=
@@ -2609,15 +3077,20 @@ instance normalCore_normal (H : Subgroup G) : H.normalCore.Normal :=
 #align subgroup.normal_core_normal Subgroup.normalCore_normal
 -/
 
+#print Subgroup.normal_le_normalCore /-
 theorem normal_le_normalCore {H : Subgroup G} {N : Subgroup G} [hN : N.Normal] :
     N ≤ H.normalCore ↔ N ≤ H :=
   ⟨ge_trans H.normalCore_le, fun h_le n hn g => h_le (hN.conj_mem n hn g)⟩
 #align subgroup.normal_le_normal_core Subgroup.normal_le_normalCore
+-/
 
+#print Subgroup.normalCore_mono /-
 theorem normalCore_mono {H K : Subgroup G} (h : H ≤ K) : H.normalCore ≤ K.normalCore :=
   normal_le_normalCore.mpr (H.normalCore_le.trans h)
 #align subgroup.normal_core_mono Subgroup.normalCore_mono
+-/
 
+#print Subgroup.normalCore_eq_iSup /-
 theorem normalCore_eq_iSup (H : Subgroup G) :
     H.normalCore = ⨆ (N : Subgroup G) (_ : Normal N) (hs : N ≤ H), N :=
   le_antisymm
@@ -2625,6 +3098,7 @@ theorem normalCore_eq_iSup (H : Subgroup G) :
       (le_iSup_of_le H.normalCore_normal (le_iSup_of_le H.normalCore_le le_rfl)))
     (iSup_le fun N => iSup_le fun hN => iSup_le normal_le_normal_core.mpr)
 #align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_iSup
+-/
 
 #print Subgroup.normalCore_eq_self /-
 @[simp]
@@ -2657,30 +3131,39 @@ def range (f : G →* N) : Subgroup N :=
 #align add_monoid_hom.range AddMonoidHom.range
 -/
 
+#print MonoidHom.coe_range /-
 @[simp, to_additive]
 theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
   rfl
 #align monoid_hom.coe_range MonoidHom.coe_range
 #align add_monoid_hom.coe_range AddMonoidHom.coe_range
+-/
 
+#print MonoidHom.mem_range /-
 @[simp, to_additive]
 theorem mem_range {f : G →* N} {y : N} : y ∈ f.range ↔ ∃ x, f x = y :=
   Iff.rfl
 #align monoid_hom.mem_range MonoidHom.mem_range
 #align add_monoid_hom.mem_range AddMonoidHom.mem_range
+-/
 
+#print MonoidHom.range_eq_map /-
 @[to_additive]
 theorem range_eq_map (f : G →* N) : f.range = (⊤ : Subgroup G).map f := by ext <;> simp
 #align monoid_hom.range_eq_map MonoidHom.range_eq_map
 #align add_monoid_hom.range_eq_map AddMonoidHom.range_eq_map
+-/
 
+#print MonoidHom.restrict_range /-
 @[simp, to_additive]
 theorem restrict_range (f : G →* N) : (f.restrict K).range = K.map f := by
   simp_rw [SetLike.ext_iff, mem_range, mem_map, restrict_apply, SetLike.exists, Subtype.coe_mk,
     iff_self_iff, forall_const]
 #align monoid_hom.restrict_range MonoidHom.restrict_range
 #align add_monoid_hom.restrict_range AddMonoidHom.restrict_range
+-/
 
+#print MonoidHom.rangeRestrict /-
 /-- The canonical surjective group homomorphism `G →* f(G)` induced by a group
 homomorphism `G →* N`. -/
 @[to_additive
@@ -2689,45 +3172,59 @@ def rangeRestrict (f : G →* N) : G →* f.range :=
   codRestrict f _ fun x => ⟨x, rfl⟩
 #align monoid_hom.range_restrict MonoidHom.rangeRestrict
 #align add_monoid_hom.range_restrict AddMonoidHom.rangeRestrict
+-/
 
+#print MonoidHom.coe_rangeRestrict /-
 @[simp, to_additive]
 theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f g :=
   rfl
 #align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrict
 #align add_monoid_hom.coe_range_restrict AddMonoidHom.coe_rangeRestrict
+-/
 
+#print MonoidHom.coe_comp_rangeRestrict /-
 @[to_additive]
 theorem coe_comp_rangeRestrict (f : G →* N) :
     (coe : f.range → N) ∘ (⇑f.range_restrict : G → f.range) = f :=
   rfl
 #align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrict
 #align add_monoid_hom.coe_comp_range_restrict AddMonoidHom.coe_comp_rangeRestrict
+-/
 
+#print MonoidHom.subtype_comp_rangeRestrict /-
 @[to_additive]
 theorem subtype_comp_rangeRestrict (f : G →* N) : f.range.Subtype.comp f.range_restrict = f :=
   ext <| f.coe_rangeRestrict
 #align monoid_hom.subtype_comp_range_restrict MonoidHom.subtype_comp_rangeRestrict
 #align add_monoid_hom.subtype_comp_range_restrict AddMonoidHom.subtype_comp_rangeRestrict
+-/
 
+#print MonoidHom.rangeRestrict_surjective /-
 @[to_additive]
 theorem rangeRestrict_surjective (f : G →* N) : Function.Surjective f.range_restrict :=
   fun ⟨_, g, rfl⟩ => ⟨g, rfl⟩
 #align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjective
 #align add_monoid_hom.range_restrict_surjective AddMonoidHom.rangeRestrict_surjective
+-/
 
+#print MonoidHom.map_range /-
 @[to_additive]
 theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).range := by
   rw [range_eq_map, range_eq_map] <;> exact (⊤ : Subgroup G).map_map g f
 #align monoid_hom.map_range MonoidHom.map_range
 #align add_monoid_hom.map_range AddMonoidHom.map_range
+-/
 
+#print MonoidHom.range_top_iff_surjective /-
 @[to_additive]
 theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
     f.range = (⊤ : Subgroup N) ↔ Function.Surjective f :=
   SetLike.ext'_iff.trans <| Iff.trans (by rw [coe_range, coe_top]) Set.range_iff_surjective
 #align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjective
 #align add_monoid_hom.range_top_iff_surjective AddMonoidHom.range_top_iff_surjective
+-/
 
+#print MonoidHom.range_top_of_surjective /-
 /-- The range of a surjective monoid homomorphism is the whole of the codomain. -/
 @[to_additive "The range of a surjective `add_monoid` homomorphism is the whole of the codomain."]
 theorem range_top_of_surjective {N} [Group N] (f : G →* N) (hf : Function.Surjective f) :
@@ -2735,26 +3232,34 @@ theorem range_top_of_surjective {N} [Group N] (f : G →* N) (hf : Function.Surj
   range_top_iff_surjective.2 hf
 #align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjective
 #align add_monoid_hom.range_top_of_surjective AddMonoidHom.range_top_of_surjective
+-/
 
+#print MonoidHom.range_one /-
 @[simp, to_additive]
 theorem range_one : (1 : G →* N).range = ⊥ :=
   SetLike.ext fun x => by simpa using @comm _ (· = ·) _ 1 x
 #align monoid_hom.range_one MonoidHom.range_one
 #align add_monoid_hom.range_zero AddMonoidHom.range_zero
+-/
 
+#print Subgroup.subtype_range /-
 @[simp, to_additive]
 theorem Subgroup.subtype_range (H : Subgroup G) : H.Subtype.range = H := by
   rw [range_eq_map, ← SetLike.coe_set_eq, coe_map, Subgroup.coeSubtype]; ext; simp
 #align subgroup.subtype_range Subgroup.subtype_range
 #align add_subgroup.subtype_range AddSubgroup.subtype_range
+-/
 
+#print Subgroup.inclusion_range /-
 @[simp, to_additive]
 theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
     (inclusion h_le).range = H.subgroupOf K :=
   Subgroup.ext fun g => Set.ext_iff.mp (Set.range_inclusion h_le) g
 #align subgroup.inclusion_range Subgroup.inclusion_range
 #align add_subgroup.inclusion_range AddSubgroup.inclusion_range
+-/
 
+#print MonoidHom.subgroupOf_range_eq_of_le /-
 @[to_additive]
 theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
     (f : G₁ →* G₂) (h : f.range ≤ K) :
@@ -2765,7 +3270,9 @@ theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂]
   simp [Subtype.ext_iff]
 #align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_le
 #align add_monoid_hom.add_subgroup_of_range_eq_of_le AddMonoidHom.addSubgroupOf_range_eq_of_le
+-/
 
+#print MonoidHom.ofLeftInverse /-
 /-- Computable alternative to `monoid_hom.of_injective`. -/
 @[to_additive "Computable alternative to `add_monoid_hom.of_injective`."]
 def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) : G ≃* f.range :=
@@ -2779,21 +3286,27 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
       rw [coe_range_restrict, Function.comp_apply, Subgroup.coeSubtype, Subtype.coe_mk, h] }
 #align monoid_hom.of_left_inverse MonoidHom.ofLeftInverse
 #align add_monoid_hom.of_left_inverse AddMonoidHom.ofLeftInverse
+-/
 
+#print MonoidHom.ofLeftInverse_apply /-
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
     ↑(ofLeftInverse h x) = f x :=
   rfl
 #align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_apply
 #align add_monoid_hom.of_left_inverse_apply AddMonoidHom.ofLeftInverse_apply
+-/
 
+#print MonoidHom.ofLeftInverse_symm_apply /-
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
     (x : f.range) : (ofLeftInverse h).symm x = g x :=
   rfl
 #align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_apply
 #align add_monoid_hom.of_left_inverse_symm_apply AddMonoidHom.ofLeftInverse_symm_apply
+-/
 
+#print MonoidHom.ofInjective /-
 /-- The range of an injective group homomorphism is isomorphic to its domain. -/
 @[to_additive "The range of an injective additive group homomorphism is isomorphic to its\ndomain."]
 noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃* f.range :=
@@ -2801,13 +3314,16 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
     ⟨fun x y h => hf (Subtype.ext_iff.mp h), by rintro ⟨x, y, rfl⟩; exact ⟨y, rfl⟩⟩
 #align monoid_hom.of_injective MonoidHom.ofInjective
 #align add_monoid_hom.of_injective AddMonoidHom.ofInjective
+-/
 
+#print MonoidHom.ofInjective_apply /-
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
     ↑(ofInjective hf x) = f x :=
   rfl
 #align monoid_hom.of_injective_apply MonoidHom.ofInjective_apply
 #align add_monoid_hom.of_injective_apply AddMonoidHom.ofInjective_apply
+-/
 
 section Ker
 
@@ -2828,24 +3344,31 @@ def ker (f : G →* M) : Subgroup G :=
 #align add_monoid_hom.ker AddMonoidHom.ker
 -/
 
+#print MonoidHom.mem_ker /-
 @[to_additive]
 theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
   Iff.rfl
 #align monoid_hom.mem_ker MonoidHom.mem_ker
 #align add_monoid_hom.mem_ker AddMonoidHom.mem_ker
+-/
 
+#print MonoidHom.coe_ker /-
 @[to_additive]
 theorem coe_ker (f : G →* M) : (f.ker : Set G) = (f : G → M) ⁻¹' {1} :=
   rfl
 #align monoid_hom.coe_ker MonoidHom.coe_ker
 #align add_monoid_hom.coe_ker AddMonoidHom.coe_ker
+-/
 
+#print MonoidHom.ker_toHomUnits /-
 @[simp, to_additive]
 theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker := by ext x;
   simp [mem_ker, Units.ext_iff]
 #align monoid_hom.ker_to_hom_units MonoidHom.ker_toHomUnits
 #align add_monoid_hom.ker_to_hom_add_units AddMonoidHom.ker_toHomAddUnits
+-/
 
+#print MonoidHom.eq_iff /-
 @[to_additive]
 theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
   by
@@ -2854,75 +3377,99 @@ theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
   · rw [← one_mul x, ← mul_inv_self y, mul_assoc, map_mul, f.mem_ker.1 h, mul_one]
 #align monoid_hom.eq_iff MonoidHom.eq_iff
 #align add_monoid_hom.eq_iff AddMonoidHom.eq_iff
+-/
 
+#print MonoidHom.decidableMemKer /-
 @[to_additive]
 instance decidableMemKer [DecidableEq M] (f : G →* M) : DecidablePred (· ∈ f.ker) := fun x =>
   decidable_of_iff (f x = 1) f.mem_ker
 #align monoid_hom.decidable_mem_ker MonoidHom.decidableMemKer
 #align add_monoid_hom.decidable_mem_ker AddMonoidHom.decidableMemKer
+-/
 
+#print MonoidHom.comap_ker /-
 @[to_additive]
 theorem comap_ker (g : N →* P) (f : G →* N) : g.ker.comap f = (g.comp f).ker :=
   rfl
 #align monoid_hom.comap_ker MonoidHom.comap_ker
 #align add_monoid_hom.comap_ker AddMonoidHom.comap_ker
+-/
 
+#print MonoidHom.comap_bot /-
 @[simp, to_additive]
 theorem comap_bot (f : G →* N) : (⊥ : Subgroup N).comap f = f.ker :=
   rfl
 #align monoid_hom.comap_bot MonoidHom.comap_bot
 #align add_monoid_hom.comap_bot AddMonoidHom.comap_bot
+-/
 
+#print MonoidHom.ker_restrict /-
 @[simp, to_additive]
 theorem ker_restrict (f : G →* N) : (f.restrict K).ker = f.ker.subgroupOf K :=
   rfl
 #align monoid_hom.ker_restrict MonoidHom.ker_restrict
 #align add_monoid_hom.ker_restrict AddMonoidHom.ker_restrict
+-/
 
+#print MonoidHom.ker_codRestrict /-
 @[simp, to_additive]
 theorem ker_codRestrict {S} [SetLike S N] [SubmonoidClass S N] (f : G →* N) (s : S)
     (h : ∀ x, f x ∈ s) : (f.codRestrict s h).ker = f.ker :=
   SetLike.ext fun x => Subtype.ext_iff
 #align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrict
 #align add_monoid_hom.ker_cod_restrict AddMonoidHom.ker_codRestrict
+-/
 
+#print MonoidHom.ker_rangeRestrict /-
 @[simp, to_additive]
 theorem ker_rangeRestrict (f : G →* N) : ker (rangeRestrict f) = ker f :=
   ker_codRestrict _ _ _
 #align monoid_hom.ker_range_restrict MonoidHom.ker_rangeRestrict
 #align add_monoid_hom.ker_range_restrict AddMonoidHom.ker_rangeRestrict
+-/
 
+#print MonoidHom.ker_one /-
 @[simp, to_additive]
 theorem ker_one : (1 : G →* M).ker = ⊤ :=
   SetLike.ext fun x => eq_self_iff_true _
 #align monoid_hom.ker_one MonoidHom.ker_one
 #align add_monoid_hom.ker_zero AddMonoidHom.ker_zero
+-/
 
+#print MonoidHom.ker_id /-
 @[simp, to_additive]
 theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
   rfl
 #align monoid_hom.ker_id MonoidHom.ker_id
 #align add_monoid_hom.ker_id AddMonoidHom.ker_id
+-/
 
+#print MonoidHom.ker_eq_bot_iff /-
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
   ⟨fun h x y hxy => by rwa [eq_iff, h, mem_bot, inv_mul_eq_one, eq_comm] at hxy , fun h =>
     bot_unique fun x hx => h (hx.trans f.map_one.symm)⟩
 #align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iff
 #align add_monoid_hom.ker_eq_bot_iff AddMonoidHom.ker_eq_bot_iff
+-/
 
+#print Subgroup.ker_subtype /-
 @[simp, to_additive]
 theorem Subgroup.ker_subtype (H : Subgroup G) : H.Subtype.ker = ⊥ :=
   H.Subtype.ker_eq_bot_iff.mpr Subtype.coe_injective
 #align subgroup.ker_subtype Subgroup.ker_subtype
 #align add_subgroup.ker_subtype AddSubgroup.ker_subtype
+-/
 
+#print Subgroup.ker_inclusion /-
 @[simp, to_additive]
 theorem Subgroup.ker_inclusion {H K : Subgroup G} (h : H ≤ K) : (inclusion h).ker = ⊥ :=
   (inclusion h).ker_eq_bot_iff.mpr (Set.inclusion_injective h)
 #align subgroup.ker_inclusion Subgroup.ker_inclusion
 #align add_subgroup.ker_inclusion AddSubgroup.ker_inclusion
+-/
 
+#print MonoidHom.prodMap_comap_prod /-
 @[to_additive]
 theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N)
     (g : G' →* N') (S : Subgroup N) (S' : Subgroup N') :
@@ -2930,13 +3477,16 @@ theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f
   SetLike.coe_injective <| Set.preimage_prod_map_prod f g _ _
 #align monoid_hom.prod_map_comap_prod MonoidHom.prodMap_comap_prod
 #align add_monoid_hom.sum_map_comap_sum AddMonoidHom.sumMap_comap_sum
+-/
 
+#print MonoidHom.ker_prodMap /-
 @[to_additive]
 theorem ker_prodMap {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N) (g : G' →* N') :
     (prodMap f g).ker = f.ker.Prod g.ker := by
   rw [← comap_bot, ← comap_bot, ← comap_bot, ← prod_map_comap_prod, bot_prod_bot]
 #align monoid_hom.ker_prod_map MonoidHom.ker_prodMap
 #align add_monoid_hom.ker_sum_map AddMonoidHom.ker_sumMap
+-/
 
 #print MonoidHom.normal_ker /-
 @[to_additive]
@@ -2962,12 +3512,15 @@ def eqLocus (f g : G →* M) : Subgroup G :=
 #align add_monoid_hom.eq_locus AddMonoidHom.eqLocus
 -/
 
+#print MonoidHom.eqLocus_same /-
 @[simp, to_additive]
 theorem eqLocus_same (f : G →* N) : f.eqLocus f = ⊤ :=
   SetLike.ext fun _ => eq_self_iff_true _
 #align monoid_hom.eq_locus_same MonoidHom.eqLocus_same
 #align add_monoid_hom.eq_locus_same AddMonoidHom.eqLocus_same
+-/
 
+#print MonoidHom.eqOn_closure /-
 /-- If two monoid homomorphisms are equal on a set, then they are equal on its subgroup closure. -/
 @[to_additive
       "If two monoid homomorphisms are equal on a set, then they are equal on its subgroup\nclosure."]
@@ -2975,27 +3528,35 @@ theorem eqOn_closure {f g : G →* M} {s : Set G} (h : Set.EqOn f g s) : Set.EqO
   show closure s ≤ f.eqLocus g from (closure_le _).2 h
 #align monoid_hom.eq_on_closure MonoidHom.eqOn_closure
 #align add_monoid_hom.eq_on_closure AddMonoidHom.eqOn_closure
+-/
 
+#print MonoidHom.eq_of_eqOn_top /-
 @[to_additive]
 theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) : f = g :=
   ext fun x => h trivial
 #align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_top
 #align add_monoid_hom.eq_of_eq_on_top AddMonoidHom.eq_of_eqOn_top
+-/
 
+#print MonoidHom.eq_of_eqOn_dense /-
 @[to_additive]
 theorem eq_of_eqOn_dense {s : Set G} (hs : closure s = ⊤) {f g : G →* M} (h : s.EqOn f g) : f = g :=
   eq_of_eqOn_top <| hs ▸ eqOn_closure h
 #align monoid_hom.eq_of_eq_on_dense MonoidHom.eq_of_eqOn_dense
 #align add_monoid_hom.eq_of_eq_on_dense AddMonoidHom.eq_of_eqOn_dense
+-/
 
 end EqLocus
 
+#print MonoidHom.closure_preimage_le /-
 @[to_additive]
 theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) ≤ (closure s).comap f :=
   (closure_le _).2 fun x hx => by rw [SetLike.mem_coe, mem_comap] <;> exact subset_closure hx
 #align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_le
 #align add_monoid_hom.closure_preimage_le AddMonoidHom.closure_preimage_le
+-/
 
+#print MonoidHom.map_closure /-
 /-- The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup
 generated by the image of the set. -/
 @[to_additive
@@ -3005,6 +3566,7 @@ theorem map_closure (f : G →* N) (s : Set G) : (closure s).map f = closure (f
     (Subgroup.gi G).gc fun t => rfl
 #align monoid_hom.map_closure MonoidHom.map_closure
 #align add_monoid_hom.map_closure AddMonoidHom.map_closure
+-/
 
 end MonoidHom
 
@@ -3012,6 +3574,7 @@ namespace Subgroup
 
 variable {N : Type _} [Group N] (H : Subgroup G)
 
+#print Subgroup.Normal.map /-
 @[to_additive]
 theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function.Surjective f) :
     (H.map f).Normal :=
@@ -3021,18 +3584,23 @@ theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function
   exact le_normalizer_map _
 #align subgroup.normal.map Subgroup.Normal.map
 #align add_subgroup.normal.map AddSubgroup.Normal.map
+-/
 
+#print Subgroup.map_eq_bot_iff /-
 @[to_additive]
 theorem map_eq_bot_iff {f : G →* N} : H.map f = ⊥ ↔ H ≤ f.ker :=
   (gc_map_comap f).l_eq_bot
 #align subgroup.map_eq_bot_iff Subgroup.map_eq_bot_iff
 #align add_subgroup.map_eq_bot_iff AddSubgroup.map_eq_bot_iff
+-/
 
+#print Subgroup.map_eq_bot_iff_of_injective /-
 @[to_additive]
 theorem map_eq_bot_iff_of_injective {f : G →* N} (hf : Function.Injective f) :
     H.map f = ⊥ ↔ H = ⊥ := by rw [map_eq_bot_iff, f.ker_eq_bot_iff.mpr hf, le_bot_iff]
 #align subgroup.map_eq_bot_iff_of_injective Subgroup.map_eq_bot_iff_of_injective
 #align add_subgroup.map_eq_bot_iff_of_injective AddSubgroup.map_eq_bot_iff_of_injective
+-/
 
 end Subgroup
 
@@ -3042,43 +3610,56 @@ open MonoidHom
 
 variable {N : Type _} [Group N] (f : G →* N)
 
+#print Subgroup.map_le_range /-
 @[to_additive]
 theorem map_le_range (H : Subgroup G) : map f H ≤ f.range :=
   (range_eq_map f).symm ▸ map_mono le_top
 #align subgroup.map_le_range Subgroup.map_le_range
 #align add_subgroup.map_le_range AddSubgroup.map_le_range
+-/
 
+#print Subgroup.map_subtype_le /-
 @[to_additive]
 theorem map_subtype_le {H : Subgroup G} (K : Subgroup H) : K.map H.Subtype ≤ H :=
   (K.map_le_range H.Subtype).trans (le_of_eq H.subtype_range)
 #align subgroup.map_subtype_le Subgroup.map_subtype_le
 #align add_subgroup.map_subtype_le AddSubgroup.map_subtype_le
+-/
 
+#print Subgroup.ker_le_comap /-
 @[to_additive]
 theorem ker_le_comap (H : Subgroup N) : f.ker ≤ comap f H :=
   comap_bot f ▸ comap_mono bot_le
 #align subgroup.ker_le_comap Subgroup.ker_le_comap
 #align add_subgroup.ker_le_comap AddSubgroup.ker_le_comap
+-/
 
+#print Subgroup.map_comap_le /-
 @[to_additive]
 theorem map_comap_le (H : Subgroup N) : map f (comap f H) ≤ H :=
   (gc_map_comap f).l_u_le _
 #align subgroup.map_comap_le Subgroup.map_comap_le
 #align add_subgroup.map_comap_le AddSubgroup.map_comap_le
+-/
 
+#print Subgroup.le_comap_map /-
 @[to_additive]
 theorem le_comap_map (H : Subgroup G) : H ≤ comap f (map f H) :=
   (gc_map_comap f).le_u_l _
 #align subgroup.le_comap_map Subgroup.le_comap_map
 #align add_subgroup.le_comap_map AddSubgroup.le_comap_map
+-/
 
+#print Subgroup.map_comap_eq /-
 @[to_additive]
 theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
   SetLike.ext' <| by
     rw [coe_map, coe_comap, Set.image_preimage_eq_inter_range, coe_inf, coe_range, Set.inter_comm]
 #align subgroup.map_comap_eq Subgroup.map_comap_eq
 #align add_subgroup.map_comap_eq AddSubgroup.map_comap_eq
+-/
 
+#print Subgroup.comap_map_eq /-
 @[to_additive]
 theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
   by
@@ -3089,110 +3670,144 @@ theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
   exact mul_mem_sup hy (by simp [mem_ker, hy'])
 #align subgroup.comap_map_eq Subgroup.comap_map_eq
 #align add_subgroup.comap_map_eq AddSubgroup.comap_map_eq
+-/
 
+#print Subgroup.map_comap_eq_self /-
 @[to_additive]
 theorem map_comap_eq_self {f : G →* N} {H : Subgroup N} (h : H ≤ f.range) : map f (comap f H) = H :=
   by rwa [map_comap_eq, inf_eq_right]
 #align subgroup.map_comap_eq_self Subgroup.map_comap_eq_self
 #align add_subgroup.map_comap_eq_self AddSubgroup.map_comap_eq_self
+-/
 
+#print Subgroup.map_comap_eq_self_of_surjective /-
 @[to_additive]
 theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective f) (H : Subgroup N) :
     map f (comap f H) = H :=
   map_comap_eq_self ((range_top_of_surjective _ h).symm ▸ le_top)
 #align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjective
 #align add_subgroup.map_comap_eq_self_of_surjective AddSubgroup.map_comap_eq_self_of_surjective
+-/
 
+#print Subgroup.comap_le_comap_of_le_range /-
 @[to_additive]
 theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤ f.range) :
     K.comap f ≤ L.comap f ↔ K ≤ L :=
   ⟨(map_comap_eq_self hf).ge.trans ∘ map_le_iff_le_comap.mpr, comap_mono⟩
 #align subgroup.comap_le_comap_of_le_range Subgroup.comap_le_comap_of_le_range
 #align add_subgroup.comap_le_comap_of_le_range AddSubgroup.comap_le_comap_of_le_range
+-/
 
+#print Subgroup.comap_le_comap_of_surjective /-
 @[to_additive]
 theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
     K.comap f ≤ L.comap f ↔ K ≤ L :=
   comap_le_comap_of_le_range (le_top.trans (f.range_top_of_surjective hf).ge)
 #align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjective
 #align add_subgroup.comap_le_comap_of_surjective AddSubgroup.comap_le_comap_of_surjective
+-/
 
+#print Subgroup.comap_lt_comap_of_surjective /-
 @[to_additive]
 theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
     K.comap f < L.comap f ↔ K < L := by simp_rw [lt_iff_le_not_le, comap_le_comap_of_surjective hf]
 #align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjective
 #align add_subgroup.comap_lt_comap_of_surjective AddSubgroup.comap_lt_comap_of_surjective
+-/
 
+#print Subgroup.comap_injective /-
 @[to_additive]
 theorem comap_injective {f : G →* N} (h : Function.Surjective f) : Function.Injective (comap f) :=
   fun K L => by simp only [le_antisymm_iff, comap_le_comap_of_surjective h, imp_self]
 #align subgroup.comap_injective Subgroup.comap_injective
 #align add_subgroup.comap_injective AddSubgroup.comap_injective
+-/
 
+#print Subgroup.comap_map_eq_self /-
 @[to_additive]
 theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) : comap f (map f H) = H :=
   by rwa [comap_map_eq, sup_eq_left]
 #align subgroup.comap_map_eq_self Subgroup.comap_map_eq_self
 #align add_subgroup.comap_map_eq_self AddSubgroup.comap_map_eq_self
+-/
 
+#print Subgroup.comap_map_eq_self_of_injective /-
 @[to_additive]
 theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
     comap f (map f H) = H :=
   comap_map_eq_self (((ker_eq_bot_iff _).mpr h).symm ▸ bot_le)
 #align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injective
 #align add_subgroup.comap_map_eq_self_of_injective AddSubgroup.comap_map_eq_self_of_injective
+-/
 
+#print Subgroup.map_le_map_iff /-
 @[to_additive]
 theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f ↔ H ≤ K ⊔ f.ker := by
   rw [map_le_iff_le_comap, comap_map_eq]
 #align subgroup.map_le_map_iff Subgroup.map_le_map_iff
 #align add_subgroup.map_le_map_iff AddSubgroup.map_le_map_iff
+-/
 
+#print Subgroup.map_le_map_iff' /-
 @[to_additive]
 theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
     H.map f ≤ K.map f ↔ H ⊔ f.ker ≤ K ⊔ f.ker := by
   simp only [map_le_map_iff, sup_le_iff, le_sup_right, and_true_iff]
 #align subgroup.map_le_map_iff' Subgroup.map_le_map_iff'
 #align add_subgroup.map_le_map_iff' AddSubgroup.map_le_map_iff'
+-/
 
+#print Subgroup.map_eq_map_iff /-
 @[to_additive]
 theorem map_eq_map_iff {f : G →* N} {H K : Subgroup G} :
     H.map f = K.map f ↔ H ⊔ f.ker = K ⊔ f.ker := by simp only [le_antisymm_iff, map_le_map_iff']
 #align subgroup.map_eq_map_iff Subgroup.map_eq_map_iff
 #align add_subgroup.map_eq_map_iff AddSubgroup.map_eq_map_iff
+-/
 
+#print Subgroup.map_eq_range_iff /-
 @[to_additive]
 theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} : H.map f = f.range ↔ Codisjoint H f.ker :=
   by rw [f.range_eq_map, map_eq_map_iff, codisjoint_iff, top_sup_eq]
 #align subgroup.map_eq_range_iff Subgroup.map_eq_range_iff
 #align add_subgroup.map_eq_range_iff AddSubgroup.map_eq_range_iff
+-/
 
+#print Subgroup.map_le_map_iff_of_injective /-
 @[to_additive]
 theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
     H.map f ≤ K.map f ↔ H ≤ K := by rw [map_le_iff_le_comap, comap_map_eq_self_of_injective hf]
 #align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injective
 #align add_subgroup.map_le_map_iff_of_injective AddSubgroup.map_le_map_iff_of_injective
+-/
 
+#print Subgroup.map_subtype_le_map_subtype /-
 @[simp, to_additive]
 theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
     H.map G'.Subtype ≤ K.map G'.Subtype ↔ H ≤ K :=
   map_le_map_iff_of_injective Subtype.coe_injective
 #align subgroup.map_subtype_le_map_subtype Subgroup.map_subtype_le_map_subtype
 #align add_subgroup.map_subtype_le_map_subtype AddSubgroup.map_subtype_le_map_subtype
+-/
 
+#print Subgroup.map_injective /-
 @[to_additive]
 theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) :=
   Function.LeftInverse.injective <| comap_map_eq_self_of_injective h
 #align subgroup.map_injective Subgroup.map_injective
 #align add_subgroup.map_injective AddSubgroup.map_injective
+-/
 
+#print Subgroup.map_eq_comap_of_inverse /-
 @[to_additive]
 theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
     (hr : Function.RightInverse g f) (H : Subgroup G) : map f H = comap g H :=
   SetLike.ext' <| by rw [coe_map, coe_comap, Set.image_eq_preimage_of_inverse hl hr]
 #align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverse
 #align add_subgroup.map_eq_comap_of_inverse AddSubgroup.map_eq_comap_of_inverse
+-/
 
+#print Subgroup.map_injective_of_ker_le /-
 /-- Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`. -/
 @[to_additive "Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`."]
 theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
@@ -3202,7 +3817,9 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
   rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf 
 #align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_le
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
+-/
 
+#print Subgroup.closure_preimage_eq_top /-
 @[to_additive]
 theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹' s) = ⊤ :=
   by
@@ -3213,7 +3830,9 @@ theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹
   exact subset_closure
 #align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_top
 #align add_subgroup.closure_preimage_eq_top AddSubgroup.closure_preimage_eq_top
+-/
 
+#print Subgroup.comap_sup_eq_of_le_range /-
 @[to_additive]
 theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range) :
     comap f H ⊔ comap f K = comap f (H ⊔ K) :=
@@ -3223,7 +3842,9 @@ theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K
         inf_eq_right.mpr hK, inf_eq_right.mpr (sup_le hH hK)])
 #align subgroup.comap_sup_eq_of_le_range Subgroup.comap_sup_eq_of_le_range
 #align add_subgroup.comap_sup_eq_of_le_range AddSubgroup.comap_sup_eq_of_le_range
+-/
 
+#print Subgroup.comap_sup_eq /-
 @[to_additive]
 theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
     comap f H ⊔ comap f K = comap f (H ⊔ K) :=
@@ -3231,21 +3852,27 @@ theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
     (le_top.trans (ge_of_eq (f.range_top_of_surjective hf)))
 #align subgroup.comap_sup_eq Subgroup.comap_sup_eq
 #align add_subgroup.comap_sup_eq AddSubgroup.comap_sup_eq
+-/
 
+#print Subgroup.sup_subgroupOf_eq /-
 @[to_additive]
 theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
     H.subgroupOf L ⊔ K.subgroupOf L = (H ⊔ K).subgroupOf L :=
   comap_sup_eq_of_le_range L.Subtype (hH.trans L.subtype_range.ge) (hK.trans L.subtype_range.ge)
 #align subgroup.sup_subgroup_of_eq Subgroup.sup_subgroupOf_eq
 #align add_subgroup.sup_add_subgroup_of_eq AddSubgroup.sup_addSubgroupOf_eq
+-/
 
+#print Subgroup.codisjoint_subgroupOf_sup /-
 @[to_additive]
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
     Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) := by
   rw [codisjoint_iff, sup_subgroup_of_eq, subgroup_of_self]; exacts [le_sup_left, le_sup_right]
 #align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_sup
 #align add_subgroup.codisjoint_add_subgroup_of_sup AddSubgroup.codisjoint_addSubgroupOf_sup
+-/
 
+#print Subgroup.equivMapOfInjective /-
 /-- A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
 use `mul_equiv.subgroup_map` for better definitional equalities. -/
 @[to_additive
@@ -3255,14 +3882,18 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
   { Equiv.Set.image f H hf with map_mul' := fun _ _ => Subtype.ext (f.map_mul _ _) }
 #align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjective
 #align add_subgroup.equiv_map_of_injective AddSubgroup.equivMapOfInjective
+-/
 
+#print Subgroup.coe_equivMapOfInjective_apply /-
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
     (h : H) : (equivMapOfInjective H f hf h : N) = f h :=
   rfl
 #align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_apply
 #align add_subgroup.coe_equiv_map_of_injective_apply AddSubgroup.coe_equivMapOfInjective_apply
+-/
 
+#print Subgroup.comap_normalizer_eq_of_surjective /-
 /-- The preimage of the normalizer is equal to the normalizer of the preimage of a surjective
   function. -/
 @[to_additive
@@ -3278,7 +3909,9 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
       simp [hx y])
 #align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjective
 #align add_subgroup.comap_normalizer_eq_of_surjective AddSubgroup.comap_normalizer_eq_of_surjective
+-/
 
+#print Subgroup.comap_normalizer_eq_of_injective_of_le_range /-
 @[to_additive]
 theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H : Subgroup G)
     {f : N →* G} (hf : Function.Injective f) (h : H.normalizer ≤ f.range) :
@@ -3293,7 +3926,9 @@ theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H :
     rw [map_comap_eq_self (le_trans le_normalizer h)]
 #align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_range
 #align add_subgroup.comap_normalizer_eq_of_injective_of_le_range AddSubgroup.comap_normalizer_eq_of_injective_of_le_range
+-/
 
+#print Subgroup.subgroupOf_normalizer_eq /-
 @[to_additive]
 theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
     H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer :=
@@ -3303,7 +3938,9 @@ theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
   simpa
 #align subgroup.subgroup_of_normalizer_eq Subgroup.subgroupOf_normalizer_eq
 #align add_subgroup.add_subgroup_of_normalizer_eq AddSubgroup.addSubgroupOf_normalizer_eq
+-/
 
+#print Subgroup.map_equiv_normalizer_eq /-
 /-- The image of the normalizer is equal to the normalizer of the image of an isomorphism. -/
 @[to_additive
       "The image of the normalizer is equal to the normalizer of the image of an\nisomorphism."]
@@ -3316,7 +3953,9 @@ theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
   simp
 #align subgroup.map_equiv_normalizer_eq Subgroup.map_equiv_normalizer_eq
 #align add_subgroup.map_equiv_normalizer_eq AddSubgroup.map_equiv_normalizer_eq
+-/
 
+#print Subgroup.map_normalizer_eq_of_bijective /-
 /-- The image of the normalizer is equal to the normalizer of the image of a bijective
   function. -/
 @[to_additive
@@ -3326,6 +3965,7 @@ theorem map_normalizer_eq_of_bijective (H : Subgroup G) {f : G →* N} (hf : Fun
   map_equiv_normalizer_eq H (MulEquiv.ofBijective f hf)
 #align subgroup.map_normalizer_eq_of_bijective Subgroup.map_normalizer_eq_of_bijective
 #align add_subgroup.map_normalizer_eq_of_bijective AddSubgroup.map_normalizer_eq_of_bijective
+-/
 
 end Subgroup
 
@@ -3335,6 +3975,7 @@ variable {G₁ G₂ G₃ : Type _} [Group G₁] [Group G₂] [Group G₃]
 
 variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 
+#print MonoidHom.liftOfRightInverseAux /-
 /-- Auxiliary definition used to define `lift_of_right_inverse` -/
 @[to_additive "Auxiliary definition used to define `lift_of_right_inverse`"]
 def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃) (hg : f.ker ≤ g.ker) :
@@ -3349,7 +3990,9 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
     simp only [hf _]
 #align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAux
 #align add_monoid_hom.lift_of_right_inverse_aux AddMonoidHom.liftOfRightInverseAux
+-/
 
+#print MonoidHom.liftOfRightInverseAux_comp_apply /-
 @[simp, to_additive]
 theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
     (hg : f.ker ≤ g.ker) (x : G₁) : (f.liftOfRightInverseAux f_inv hf g hg) (f x) = g x :=
@@ -3361,7 +4004,9 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
   simp only [hf _]
 #align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_apply
 #align add_monoid_hom.lift_of_right_inverse_aux_comp_apply AddMonoidHom.liftOfRightInverseAux_comp_apply
+-/
 
+#print MonoidHom.liftOfRightInverse /-
 /-- `lift_of_right_inverse f hf g hg` is the unique group homomorphism `φ`
 
 * such that `φ.comp f = g` (`monoid_hom.lift_of_right_inverse_comp`),
@@ -3395,7 +4040,9 @@ def liftOfRightInverse (hf : Function.RightInverse f_inv f) :
     simp [lift_of_right_inverse_aux, hf b]
 #align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverse
 #align add_monoid_hom.lift_of_right_inverse AddMonoidHom.liftOfRightInverse
+-/
 
+#print MonoidHom.liftOfSurjective /-
 /-- A non-computable version of `monoid_hom.lift_of_right_inverse` for when no computable right
 inverse is available, that uses `function.surj_inv`. -/
 @[simp,
@@ -3406,7 +4053,9 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
   f.liftOfRightInverse (Function.surjInv hf) (Function.rightInverse_surjInv hf)
 #align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjective
 #align add_monoid_hom.lift_of_surjective AddMonoidHom.liftOfSurjective
+-/
 
+#print MonoidHom.liftOfRightInverse_comp_apply /-
 @[simp, to_additive]
 theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
     (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) (x : G₁) :
@@ -3414,14 +4063,18 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
   f.liftOfRightInverseAux_comp_apply f_inv hf g.1 g.2 x
 #align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_apply
 #align add_monoid_hom.lift_of_right_inverse_comp_apply AddMonoidHom.liftOfRightInverse_comp_apply
+-/
 
+#print MonoidHom.liftOfRightInverse_comp /-
 @[simp, to_additive]
 theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
     (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) : (f.liftOfRightInverse f_inv hf g).comp f = g :=
   MonoidHom.ext <| f.liftOfRightInverse_comp_apply f_inv hf g
 #align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_comp
 #align add_monoid_hom.lift_of_right_inverse_comp AddMonoidHom.liftOfRightInverse_comp
+-/
 
+#print MonoidHom.eq_liftOfRightInverse /-
 @[to_additive]
 theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
     (hg : f.ker ≤ g.ker) (h : G₂ →* G₃) (hh : h.comp f = g) :
@@ -3431,6 +4084,7 @@ theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →
   exact ((f.lift_of_right_inverse f_inv hf).apply_symm_apply _).symm
 #align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverse
 #align add_monoid_hom.eq_lift_of_right_inverse AddMonoidHom.eq_liftOfRightInverse
+-/
 
 end MonoidHom
 
@@ -3454,6 +4108,7 @@ instance (priority := 100) Subgroup.normal_comap {H : Subgroup N} [nH : H.Normal
 #align add_subgroup.normal_comap AddSubgroup.normal_comap
 -/
 
+#print Subgroup.Normal.subgroupOf /-
 -- Here `H.normal` is an explicit argument so we can use dot notation with `subgroup_of`.
 @[to_additive]
 theorem Subgroup.Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgroup G) :
@@ -3461,36 +4116,45 @@ theorem Subgroup.Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgrou
   hH.comap _
 #align subgroup.normal.subgroup_of Subgroup.Normal.subgroupOf
 #align add_subgroup.normal.add_subgroup_of AddSubgroup.Normal.addSubgroupOf
+-/
 
+#print Subgroup.normal_subgroupOf /-
 @[to_additive]
 instance (priority := 100) Subgroup.normal_subgroupOf {H N : Subgroup G} [N.Normal] :
     (N.subgroupOf H).Normal :=
   Subgroup.normal_comap _
 #align subgroup.normal_subgroup_of Subgroup.normal_subgroupOf
 #align add_subgroup.normal_add_subgroup_of AddSubgroup.normal_addSubgroupOf
+-/
 
 namespace MonoidHom
 
+#print MonoidHom.subgroupComap /-
 /-- The `monoid_hom` from the preimage of a subgroup to itself. -/
 @[to_additive "the `add_monoid_hom` from the preimage of an additive subgroup to itself.", simps]
 def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
   f.submonoidComap H'.toSubmonoid
 #align monoid_hom.subgroup_comap MonoidHom.subgroupComap
 #align add_monoid_hom.add_subgroup_comap AddMonoidHom.addSubgroupComap
+-/
 
+#print MonoidHom.subgroupMap /-
 /-- The `monoid_hom` from a subgroup to its image. -/
 @[to_additive "the `add_monoid_hom` from an additive subgroup to its image", simps]
 def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
   f.submonoidMap H.toSubmonoid
 #align monoid_hom.subgroup_map MonoidHom.subgroupMap
 #align add_monoid_hom.add_subgroup_map AddMonoidHom.addSubgroupMap
+-/
 
+#print MonoidHom.subgroupMap_surjective /-
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
     Function.Surjective (f.subgroupMap H) :=
   f.submonoidMap_surjective H.toSubmonoid
 #align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjective
 #align add_monoid_hom.add_subgroup_map_surjective AddMonoidHom.addSubgroupMap_surjective
+-/
 
 end MonoidHom
 
@@ -3498,6 +4162,7 @@ namespace MulEquiv
 
 variable {H K : Subgroup G}
 
+#print MulEquiv.subgroupCongr /-
 /-- Makes the identity isomorphism from a proof two subgroups of a multiplicative
     group are equal. -/
 @[to_additive
@@ -3506,7 +4171,9 @@ def subgroupCongr (h : H = K) : H ≃* K :=
   { Equiv.setCongr <| congr_arg _ h with map_mul' := fun _ _ => rfl }
 #align mul_equiv.subgroup_congr MulEquiv.subgroupCongr
 #align add_equiv.add_subgroup_congr AddEquiv.addSubgroupCongr
+-/
 
+#print MulEquiv.subgroupMap /-
 /-- A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
 use `subgroup.equiv_map_of_injective`. -/
 @[to_additive
@@ -3515,33 +4182,41 @@ def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G')
   MulEquiv.submonoidMap (e : G ≃* G') H.toSubmonoid
 #align mul_equiv.subgroup_map MulEquiv.subgroupMap
 #align add_equiv.add_subgroup_map AddEquiv.addSubgroupMap
+-/
 
+#print MulEquiv.coe_subgroupMap_apply /-
 @[simp, to_additive]
 theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
     ((subgroupMap e H g : H.map (e : G →* G')) : G') = e g :=
   rfl
 #align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_apply
 #align add_equiv.coe_add_subgroup_map_apply AddEquiv.coe_addSubgroupMap_apply
+-/
 
+#print MulEquiv.subgroupMap_symm_apply /-
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
     (e.subgroupMap H).symm g = ⟨e.symm g, SetLike.mem_coe.1 <| Set.mem_image_equiv.1 g.2⟩ :=
   rfl
 #align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_apply
 #align add_equiv.add_subgroup_map_symm_apply AddEquiv.addSubgroupMap_symm_apply
+-/
 
 end MulEquiv
 
 namespace Subgroup
 
+#print Subgroup.equivMapOfInjective_coe_mulEquiv /-
 @[simp, to_additive]
 theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
     H.equivMapOfInjective (e : G →* G') (EquivLike.injective e) = e.subgroupMap H := by ext; rfl
 #align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquiv
 #align add_subgroup.equiv_map_of_injective_coe_add_equiv AddSubgroup.equivMapOfInjective_coe_addEquiv
+-/
 
 variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
 
+#print Subgroup.mem_sup /-
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
   ⟨fun h => by
@@ -3558,13 +4233,17 @@ theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
     rintro ⟨y, hy, z, hz, rfl⟩ <;> exact mul_mem_sup hy hz⟩
 #align subgroup.mem_sup Subgroup.mem_sup
 #align add_subgroup.mem_sup AddSubgroup.mem_sup
+-/
 
+#print Subgroup.mem_sup' /-
 @[to_additive]
 theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s) (z : t), (y : C) * z = x :=
   mem_sup.trans <| by simp only [SetLike.exists, coe_mk]
 #align subgroup.mem_sup' Subgroup.mem_sup'
 #align add_subgroup.mem_sup' AddSubgroup.mem_sup'
+-/
 
+#print Subgroup.mem_closure_pair /-
 @[to_additive]
 theorem mem_closure_pair {x y z : C} :
     z ∈ closure ({x, y} : Set C) ↔ ∃ m n : ℤ, x ^ m * y ^ n = z :=
@@ -3573,6 +4252,7 @@ theorem mem_closure_pair {x y z : C} :
   simp_rw [exists_prop, mem_closure_singleton, exists_exists_eq_and]
 #align subgroup.mem_closure_pair Subgroup.mem_closure_pair
 #align add_subgroup.mem_closure_pair AddSubgroup.mem_closure_pair
+-/
 
 @[to_additive]
 instance : IsModularLattice (Subgroup C) :=
@@ -3588,6 +4268,7 @@ namespace Subgroup
 
 section SubgroupNormal
 
+#print Subgroup.normal_subgroupOf_iff /-
 @[to_additive]
 theorem normal_subgroupOf_iff {H K : Subgroup G} (hHK : H ≤ K) :
     (H.subgroupOf K).Normal ↔ ∀ h k, h ∈ H → k ∈ K → k * h * k⁻¹ ∈ H :=
@@ -3595,7 +4276,9 @@ theorem normal_subgroupOf_iff {H K : Subgroup G} (hHK : H ≤ K) :
     { conj_mem := fun h hm k => hN h.1 k.1 hm k.2 }⟩
 #align subgroup.normal_subgroup_of_iff Subgroup.normal_subgroupOf_iff
 #align add_subgroup.normal_add_subgroup_of_iff AddSubgroup.normal_addSubgroupOf_iff
+-/
 
+#print Subgroup.prod_subgroupOf_prod_normal /-
 @[to_additive]
 instance prod_subgroupOf_prod_normal {H₁ K₁ : Subgroup G} {H₂ K₂ : Subgroup N}
     [h₁ : (H₁.subgroupOf K₁).Normal] [h₂ : (H₂.subgroupOf K₂).Normal] :
@@ -3607,7 +4290,9 @@ instance prod_subgroupOf_prod_normal {H₁ K₁ : Subgroup G} {H₂ K₂ : Subgr
         ⟨(g : G × N).snd, (mem_prod.mp g.2).2⟩⟩
 #align subgroup.prod_subgroup_of_prod_normal Subgroup.prod_subgroupOf_prod_normal
 #align add_subgroup.sum_add_subgroup_of_sum_normal AddSubgroup.sum_addSubgroupOf_sum_normal
+-/
 
+#print Subgroup.prod_normal /-
 @[to_additive]
 instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.Normal] :
     (H.Prod K).Normal
@@ -3616,7 +4301,9 @@ instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.N
       hK.conj_mem n.snd (Subgroup.mem_prod.mp hg).2 g.snd⟩
 #align subgroup.prod_normal Subgroup.prod_normal
 #align add_subgroup.sum_normal AddSubgroup.sum_normal
+-/
 
+#print Subgroup.inf_subgroupOf_inf_normal_of_right /-
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
     [hN : (B'.subgroupOf B).Normal] : ((A ⊓ B').subgroupOf (A ⊓ B)).Normal :=
@@ -3626,7 +4313,9 @@ theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
         (normal_subgroupOf_iff hB).mp hN n g hn.2 (mem_inf.mp g.2).2⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_right
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_right AddSubgroup.inf_addSubgroupOf_inf_normal_of_right
+-/
 
+#print Subgroup.inf_subgroupOf_inf_normal_of_left /-
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (hA : A' ≤ A)
     [hN : (A'.subgroupOf A).Normal] : ((A' ⊓ B).subgroupOf (A ⊓ B)).Normal :=
@@ -3636,13 +4325,17 @@ theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (
         mul_mem (mul_mem (mem_inf.1 g.2).2 (mem_inf.1 n.2).2) (inv_mem (mem_inf.1 g.2).2)⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_left
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_left AddSubgroup.inf_addSubgroupOf_inf_normal_of_left
+-/
 
+#print Subgroup.normal_inf_normal /-
 @[to_additive]
 instance normal_inf_normal (H K : Subgroup G) [hH : H.Normal] [hK : K.Normal] : (H ⊓ K).Normal :=
   ⟨fun n hmem g => ⟨hH.conj_mem n hmem.1 g, hK.conj_mem n hmem.2 g⟩⟩
 #align subgroup.normal_inf_normal Subgroup.normal_inf_normal
 #align add_subgroup.normal_inf_normal AddSubgroup.normal_inf_normal
+-/
 
+#print Subgroup.subgroupOf_sup /-
 @[to_additive]
 theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
     (A ⊔ A').subgroupOf B = A.subgroupOf B ⊔ A'.subgroupOf B :=
@@ -3654,7 +4347,9 @@ theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
     rw [inf_of_le_right (sup_le hA hA'), inf_of_le_right hA', inf_of_le_right hA]
 #align subgroup.subgroup_of_sup Subgroup.subgroupOf_sup
 #align add_subgroup.add_subgroup_of_sup AddSubgroup.addSubgroupOf_sup
+-/
 
+#print Subgroup.SubgroupNormal.mem_comm /-
 @[to_additive]
 theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgroupOf K).Normal]
     {a b : G} (hb : b ∈ K) (h : a * b ∈ H) : b * a ∈ H :=
@@ -3663,7 +4358,9 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
   rwa [mul_assoc, mul_assoc, mul_right_inv, mul_one] at this 
 #align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_comm
 #align add_subgroup.subgroup_normal.mem_comm AddSubgroup.SubgroupNormal.mem_comm
+-/
 
+#print Subgroup.commute_of_normal_of_disjoint /-
 /-- Elements of disjoint, normal subgroups commute. -/
 @[to_additive "Elements of disjoint, normal subgroups commute."]
 theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Normal) (hH₂ : H₂.Normal)
@@ -3679,22 +4376,28 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
     apply hH₂.conj_mem _ hy
 #align subgroup.commute_of_normal_of_disjoint Subgroup.commute_of_normal_of_disjoint
 #align add_subgroup.commute_of_normal_of_disjoint AddSubgroup.commute_of_normal_of_disjoint
+-/
 
 end SubgroupNormal
 
+#print Subgroup.disjoint_def /-
 @[to_additive]
 theorem disjoint_def {H₁ H₂ : Subgroup G} : Disjoint H₁ H₂ ↔ ∀ {x : G}, x ∈ H₁ → x ∈ H₂ → x = 1 :=
   disjoint_iff_inf_le.trans <| by simp only [Disjoint, SetLike.le_def, mem_inf, mem_bot, and_imp]
 #align subgroup.disjoint_def Subgroup.disjoint_def
 #align add_subgroup.disjoint_def AddSubgroup.disjoint_def
+-/
 
+#print Subgroup.disjoint_def' /-
 @[to_additive]
 theorem disjoint_def' {H₁ H₂ : Subgroup G} :
     Disjoint H₁ H₂ ↔ ∀ {x y : G}, x ∈ H₁ → y ∈ H₂ → x = y → x = 1 :=
   disjoint_def.trans ⟨fun h x y hx hy hxy => h hx <| hxy.symm ▸ hy, fun h x hx hx' => h hx hx' rfl⟩
 #align subgroup.disjoint_def' Subgroup.disjoint_def'
 #align add_subgroup.disjoint_def' AddSubgroup.disjoint_def'
+-/
 
+#print Subgroup.disjoint_iff_mul_eq_one /-
 @[to_additive]
 theorem disjoint_iff_mul_eq_one {H₁ H₂ : Subgroup G} :
     Disjoint H₁ H₂ ↔ ∀ {x y : G}, x ∈ H₁ → y ∈ H₂ → x * y = 1 → x = 1 ∧ y = 1 :=
@@ -3705,7 +4408,9 @@ theorem disjoint_iff_mul_eq_one {H₁ H₂ : Subgroup G} :
       fun h x y hx hy hxy => (h hx (H₂.inv_mem hy) (mul_inv_eq_one.mpr hxy)).1⟩
 #align subgroup.disjoint_iff_mul_eq_one Subgroup.disjoint_iff_mul_eq_one
 #align add_subgroup.disjoint_iff_add_eq_zero AddSubgroup.disjoint_iff_add_eq_zero
+-/
 
+#print Subgroup.mul_injective_of_disjoint /-
 @[to_additive]
 theorem mul_injective_of_disjoint {H₁ H₂ : Subgroup G} (h : Disjoint H₁ H₂) :
     Function.Injective (fun g => g.1 * g.2 : H₁ × H₂ → G) :=
@@ -3717,6 +4422,7 @@ theorem mul_injective_of_disjoint {H₁ H₂ : Subgroup G} (h : Disjoint H₁ H
     Subtype.ext_iff, eq_comm, ← Prod.ext_iff] at hxy 
 #align subgroup.mul_injective_of_disjoint Subgroup.mul_injective_of_disjoint
 #align add_subgroup.add_injective_of_disjoint AddSubgroup.add_injective_of_disjoint
+-/
 
 end Subgroup
 
@@ -3724,6 +4430,7 @@ namespace IsConj
 
 open Subgroup
 
+#print IsConj.normalClosure_eq_top_of /-
 theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg : g ∈ N}
     {hg' : g' ∈ N} (hc : IsConj g g') (ht : normalClosure ({⟨g, hg⟩} : Set N) = ⊤) :
     normalClosure ({⟨g', hg'⟩} : Set N) = ⊤ :=
@@ -3750,6 +4457,7 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
     MonoidHom.restrict_apply, mem_comap]
   exact subset_normal_closure (Set.mem_singleton _)
 #align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_of
+-/
 
 end IsConj
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit b915e9392ecb2a861e1e766f0e1df6ac481188ca
+! leanprover-community/mathlib commit cc67cd75b4e54191e13c2e8d722289a89e67e4fa
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -2334,9 +2334,11 @@ theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
 #align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
 #align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
 
+@[to_additive]
 theorem center_le_centralizer (s) : center G ≤ centralizer s :=
   Set.center_subset_centralizer s
 #align subgroup.center_le_centralizer Subgroup.center_le_centralizer
+#align add_subgroup.center_le_centralizer AddSubgroup.center_le_centralizer
 
 @[to_additive]
 theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
@@ -2344,10 +2346,11 @@ theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
 #align subgroup.centralizer_le Subgroup.centralizer_le
 #align add_subgroup.centralizer_le AddSubgroup.centralizer_le
 
-@[simp]
+@[simp, to_additive]
 theorem centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
   SetLike.ext'_iff.trans Set.centralizer_eq_top_iff_subset
 #align subgroup.centralizer_eq_top_iff_subset Subgroup.centralizer_eq_top_iff_subset
+#align add_subgroup.centralizer_eq_top_iff_subset AddSubgroup.centralizer_eq_top_iff_subset
 
 #print Subgroup.Centralizer.characteristic /-
 @[to_additive]
Diff
@@ -1922,7 +1922,7 @@ structure Normal : Prop where
 #align subgroup.normal Subgroup.Normal
 -/
 
-attribute [class] normal
+attribute [class] Normal
 
 end Subgroup
 
@@ -1938,7 +1938,7 @@ structure Normal (H : AddSubgroup A) : Prop where
 
 attribute [to_additive AddSubgroup.Normal] Subgroup.Normal
 
-attribute [class] normal
+attribute [class] Normal
 
 end AddSubgroup
 
@@ -2521,7 +2521,7 @@ instance normalClosure_normal : (normalClosure s).Normal :=
     by
     refine' Subgroup.closure_induction h (fun x hx => _) _ (fun x y ihx ihy => _) fun x ihx => _
     · exact conjugates_of_set_subset_normal_closure (conj_mem_conjugates_of_set hx)
-    · simpa using (normal_closure s).one_mem
+    · simpa using (normalClosure s).one_mem
     · rw [← conj_mul]
       exact mul_mem ihx ihy
     · rw [← conj_inv]
Diff
@@ -2820,8 +2820,7 @@ def ker (f : G →* M) : Subgroup G :=
     inv_mem' := fun x (hx : f x = 1) =>
       calc
         f x⁻¹ = f x * f x⁻¹ := by rw [hx, one_mul]
-        _ = 1 := by rw [← map_mul, mul_inv_self, map_one]
-         }
+        _ = 1 := by rw [← map_mul, mul_inv_self, map_one] }
 #align monoid_hom.ker MonoidHom.ker
 #align add_monoid_hom.ker AddMonoidHom.ker
 -/
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit 6b60020790e39e77bfd633ba3d5562ff82e52c79
+! leanprover-community/mathlib commit b915e9392ecb2a861e1e766f0e1df6ac481188ca
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -2334,12 +2334,21 @@ theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
 #align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
 #align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
 
+theorem center_le_centralizer (s) : center G ≤ centralizer s :=
+  Set.center_subset_centralizer s
+#align subgroup.center_le_centralizer Subgroup.center_le_centralizer
+
 @[to_additive]
 theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
   Submonoid.centralizer_le h
 #align subgroup.centralizer_le Subgroup.centralizer_le
 #align add_subgroup.centralizer_le AddSubgroup.centralizer_le
 
+@[simp]
+theorem centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
+  SetLike.ext'_iff.trans Set.centralizer_eq_top_iff_subset
+#align subgroup.centralizer_eq_top_iff_subset Subgroup.centralizer_eq_top_iff_subset
+
 #print Subgroup.Centralizer.characteristic /-
 @[to_additive]
 instance Subgroup.Centralizer.characteristic [hH : H.Characteristic] :
Diff
@@ -658,7 +658,7 @@ protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K :=
 #align subgroup.zpow_mem Subgroup.zpow_mem
 #align add_subgroup.zsmul_mem AddSubgroup.zsmul_mem
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
 def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), x * y⁻¹ ∈ s) :
Diff
@@ -959,12 +959,12 @@ theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x 
 @[to_additive "A subgroup is either the trivial subgroup or nontrivial."]
 theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
   classical
-    by_cases h : ∀ x ∈ H, x = (1 : G)
-    · left
-      exact H.eq_bot_iff_forall.mpr h
-    · right
-      simp only [not_forall] at h 
-      simpa only [nontrivial_iff_exists_ne_one]
+  by_cases h : ∀ x ∈ H, x = (1 : G)
+  · left
+    exact H.eq_bot_iff_forall.mpr h
+  · right
+    simp only [not_forall] at h 
+    simpa only [nontrivial_iff_exists_ne_one]
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
 
@@ -1116,7 +1116,7 @@ theorem eq_top_iff' : H = ⊤ ↔ ∀ x : G, x ∈ H :=
 /-- The `subgroup` generated by a set. -/
 @[to_additive "The `add_subgroup` generated by a set"]
 def closure (k : Set G) : Subgroup G :=
-  sInf { K | k ⊆ K }
+  sInf {K | k ⊆ K}
 #align subgroup.closure Subgroup.closure
 #align add_subgroup.closure AddSubgroup.closure
 -/
@@ -1903,13 +1903,13 @@ theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i
 @[to_additive]
 theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀ i, H i = ⊥ := by
   classical
-    simp only [eq_bot_iff_forall]
-    constructor
-    · intro h i x hx
-      have : MonoidHom.single f i x = 1 :=
-        h (MonoidHom.single f i x) ((mul_single_mem_pi i x).mpr fun _ => hx)
-      simpa using congr_fun this i
-    · exact fun h x hx => funext fun i => h _ _ (hx i trivial)
+  simp only [eq_bot_iff_forall]
+  constructor
+  · intro h i x hx
+    have : MonoidHom.single f i x = 1 :=
+      h (MonoidHom.single f i x) ((mul_single_mem_pi i x).mpr fun _ => hx)
+    simpa using congr_fun this i
+  · exact fun h x hx => funext fun i => h _ _ (hx i trivial)
 #align subgroup.pi_eq_bot_iff Subgroup.pi_eq_bot_iff
 #align add_subgroup.pi_eq_bot_iff AddSubgroup.pi_eq_bot_iff
 
@@ -1929,7 +1929,7 @@ end Subgroup
 namespace AddSubgroup
 
 #print AddSubgroup.Normal /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
 /-- An add_subgroup is normal if whenever `n ∈ H`, then `g + n - g ∈ H` for every `g : G` -/
 structure Normal (H : AddSubgroup A) : Prop where
   conj_mem : ∀ n, n ∈ H → ∀ g : A, g + n + -g ∈ H
@@ -2149,7 +2149,7 @@ section Normalizer
 @[to_additive "The `normalizer` of `H` is the largest subgroup of `G` inside which `H` is normal."]
 def normalizer : Subgroup G
     where
-  carrier := { g : G | ∀ n, n ∈ H ↔ g * n * g⁻¹ ∈ H }
+  carrier := {g : G | ∀ n, n ∈ H ↔ g * n * g⁻¹ ∈ H}
   one_mem' := by simp
   mul_mem' a b (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) (hb : ∀ n, n ∈ H ↔ b * n * b⁻¹ ∈ H) n := by
     rw [hb, ha]; simp [mul_assoc]
@@ -2166,7 +2166,7 @@ def normalizer : Subgroup G
       "The `set_normalizer` of `S` is the subgroup of `G` whose elements satisfy\n`g+S-g=S`."]
 def setNormalizer (S : Set G) : Subgroup G
     where
-  carrier := { g : G | ∀ n, n ∈ S ↔ g * n * g⁻¹ ∈ S }
+  carrier := {g : G | ∀ n, n ∈ S ↔ g * n * g⁻¹ ∈ S}
   one_mem' := by simp
   mul_mem' a b (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) (hb : ∀ n, n ∈ S ↔ b * n * b⁻¹ ∈ S) n := by
     rw [hb, ha]; simp [mul_assoc]
@@ -2579,7 +2579,7 @@ theorem normalClosure_closure_eq_normalClosure {s : Set G} :
 as shown by `subgroup.normal_core_eq_supr`. -/
 def normalCore (H : Subgroup G) : Subgroup G
     where
-  carrier := { a : G | ∀ b : G, b * a * b⁻¹ ∈ H }
+  carrier := {a : G | ∀ b : G, b * a * b⁻¹ ∈ H}
   one_mem' a := by rw [mul_one, mul_inv_self] <;> exact H.one_mem
   inv_mem' a h b := (congr_arg (· ∈ H) conj_inv).mp (H.inv_mem (h b))
   mul_mem' a b ha hb c := (congr_arg (· ∈ H) conj_mul).mp (H.mul_mem (ha c) (hb c))
@@ -3187,7 +3187,7 @@ theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.Lef
 theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
     (hf : map f H = map f K) : H = K :=
   by
-  apply_fun comap f  at hf 
+  apply_fun comap f at hf 
   rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf 
 #align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_le
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
Diff
@@ -121,7 +121,7 @@ export NegMemClass (neg_mem)
 #print SubgroupClass /-
 /-- `subgroup_class S G` states `S` is a type of subsets `s ⊆ G` that are subgroups of `G`. -/
 class SubgroupClass (S G : Type _) [DivInvMonoid G] [SetLike S G] extends SubmonoidClass S G,
-  InvMemClass S G : Prop
+    InvMemClass S G : Prop
 #align subgroup_class SubgroupClass
 -/
 
@@ -129,7 +129,7 @@ class SubgroupClass (S G : Type _) [DivInvMonoid G] [SetLike S G] extends Submon
 /-- `add_subgroup_class S G` states `S` is a type of subsets `s ⊆ G` that are
 additive subgroups of `G`. -/
 class AddSubgroupClass (S G : Type _) [SubNegMonoid G] [SetLike S G] extends AddSubmonoidClass S G,
-  NegMemClass S G : Prop
+    NegMemClass S G : Prop
 #align add_subgroup_class AddSubgroupClass
 -/
 
@@ -963,7 +963,7 @@ theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
     · left
       exact H.eq_bot_iff_forall.mpr h
     · right
-      simp only [not_forall] at h
+      simp only [not_forall] at h 
       simpa only [nontrivial_iff_exists_ne_one]
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
@@ -2137,7 +2137,7 @@ theorem CommGroup.center_eq_top {G : Type _} [CommGroup G] : center G = ⊤ := b
 
 /-- A group is commutative if the center is the whole group -/
 def Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
-  { (_ : Group G) with mul_comm := by rw [eq_top_iff'] at h; intro x y; exact h y x }
+  { (_ : Group G) with mul_comm := by rw [eq_top_iff'] at h ; intro x y; exact h y x }
 #align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTop
 
 variable {G} (H)
@@ -2212,7 +2212,7 @@ instance (priority := 100) normal_in_normalizer : (H.subgroupOf H.normalizer).No
 theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
   eq_top_iff.trans
     ⟨fun h => ⟨fun a ha b => (h (mem_top b) a).mp ha⟩, fun h a ha b =>
-      ⟨fun hb => h.conj_mem b hb a, fun hb => by rwa [h.mem_comm_iff, inv_mul_cancel_left] at hb⟩⟩
+      ⟨fun hb => h.conj_mem b hb a, fun hb => by rwa [h.mem_comm_iff, inv_mul_cancel_left] at hb ⟩⟩
 #align subgroup.normalizer_eq_top Subgroup.normalizer_eq_top
 #align add_subgroup.normalizer_eq_top AddSubgroup.normalizer_eq_top
 
@@ -2406,7 +2406,7 @@ theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCo
         (by
           have := mul_comm (⟨f a, a.2⟩ : H) (⟨f b, b.2⟩ : H)
           rwa [Subtype.ext_iff, coe_mul, coe_mul, coe_mk, coe_mk, ← map_mul, ← map_mul,
-            hf.eq_iff] at this)⟩⟩
+            hf.eq_iff] at this )⟩⟩
 #align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutative
 #align add_subgroup.comap_injective_is_commutative AddSubgroup.comap_injective_isCommutative
 
@@ -2895,7 +2895,7 @@ theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
 
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
-  ⟨fun h x y hxy => by rwa [eq_iff, h, mem_bot, inv_mul_eq_one, eq_comm] at hxy, fun h =>
+  ⟨fun h x y hxy => by rwa [eq_iff, h, mem_bot, inv_mul_eq_one, eq_comm] at hxy , fun h =>
     bot_unique fun x hx => h (hx.trans f.map_one.symm)⟩
 #align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iff
 #align add_monoid_hom.ker_eq_bot_iff AddMonoidHom.ker_eq_bot_iff
@@ -3072,7 +3072,7 @@ theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
 theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
   by
   refine' le_antisymm _ (sup_le (le_comap_map _ _) (ker_le_comap _ _))
-  intro x hx; simp only [exists_prop, mem_map, mem_comap] at hx
+  intro x hx; simp only [exists_prop, mem_map, mem_comap] at hx 
   rcases hx with ⟨y, hy, hy'⟩
   rw [← mul_inv_cancel_left y x]
   exact mul_mem_sup hy (by simp [mem_ker, hy'])
@@ -3187,8 +3187,8 @@ theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.Lef
 theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
     (hf : map f H = map f K) : H = K :=
   by
-  apply_fun comap f  at hf
-  rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf
+  apply_fun comap f  at hf 
+  rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf 
 #align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_le
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
 
@@ -3231,7 +3231,7 @@ theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
 @[to_additive]
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
     Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) := by
-  rw [codisjoint_iff, sup_subgroup_of_eq, subgroup_of_self]; exacts[le_sup_left, le_sup_right]
+  rw [codisjoint_iff, sup_subgroup_of_eq, subgroup_of_self]; exacts [le_sup_left, le_sup_right]
 #align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_sup
 #align add_subgroup.codisjoint_add_subgroup_of_sup AddSubgroup.codisjoint_addSubgroupOf_sup
 
@@ -3534,7 +3534,7 @@ variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
   ⟨fun h => by
-    rw [← closure_eq s, ← closure_eq t, ← closure_union] at h
+    rw [← closure_eq s, ← closure_eq t, ← closure_union] at h 
     apply closure_induction h
     · rintro y (h | h)
       · exact ⟨y, h, 1, t.one_mem, by simp⟩
@@ -3549,7 +3549,7 @@ theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
 #align add_subgroup.mem_sup AddSubgroup.mem_sup
 
 @[to_additive]
-theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s)(z : t), (y : C) * z = x :=
+theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s) (z : t), (y : C) * z = x :=
   mem_sup.trans <| by simp only [SetLike.exists, coe_mk]
 #align subgroup.mem_sup' Subgroup.mem_sup'
 #align add_subgroup.mem_sup' AddSubgroup.mem_sup'
@@ -3566,7 +3566,7 @@ theorem mem_closure_pair {x y z : C} :
 @[to_additive]
 instance : IsModularLattice (Subgroup C) :=
   ⟨fun x y z xz a ha => by
-    rw [mem_inf, mem_sup] at ha
+    rw [mem_inf, mem_sup] at ha 
     rcases ha with ⟨⟨b, hb, c, hc, rfl⟩, haz⟩
     rw [mem_sup]
     exact ⟨b, hb, c, mem_inf.2 ⟨hc, (mul_mem_cancel_left (xz hb)).1 haz⟩, rfl⟩⟩
@@ -3649,7 +3649,7 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
     {a b : G} (hb : b ∈ K) (h : a * b ∈ H) : b * a ∈ H :=
   by
   have := (normal_subgroup_of_iff hK).mp hN (a * b) b h hb
-  rwa [mul_assoc, mul_assoc, mul_right_inv, mul_one] at this
+  rwa [mul_assoc, mul_assoc, mul_right_inv, mul_one] at this 
 #align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_comm
 #align add_subgroup.subgroup_normal.mem_comm AddSubgroup.SubgroupNormal.mem_comm
 
@@ -3659,7 +3659,7 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
     (hdis : Disjoint H₁ H₂) (x y : G) (hx : x ∈ H₁) (hy : y ∈ H₂) : Commute x y :=
   by
   suffices x * y * x⁻¹ * y⁻¹ = 1 by show x * y = y * x;
-    · rw [mul_assoc, mul_eq_one_iff_eq_inv] at this; simpa
+    · rw [mul_assoc, mul_eq_one_iff_eq_inv] at this ; simpa
   apply hdis.le_bot; constructor
   · suffices x * (y * x⁻¹ * y⁻¹) ∈ H₁ by simpa [mul_assoc]
     exact H₁.mul_mem hx (hH₁.conj_mem _ (H₁.inv_mem hx) _)
@@ -3700,10 +3700,10 @@ theorem mul_injective_of_disjoint {H₁ H₂ : Subgroup G} (h : Disjoint H₁ H
     Function.Injective (fun g => g.1 * g.2 : H₁ × H₂ → G) :=
   by
   intro x y hxy
-  rw [← inv_mul_eq_iff_eq_mul, ← mul_assoc, ← mul_inv_eq_one, mul_assoc] at hxy
+  rw [← inv_mul_eq_iff_eq_mul, ← mul_assoc, ← mul_inv_eq_one, mul_assoc] at hxy 
   replace hxy := disjoint_iff_mul_eq_one.mp h (y.1⁻¹ * x.1).Prop (x.2 * y.2⁻¹).Prop hxy
   rwa [coe_mul, coe_mul, coe_inv, coe_inv, inv_mul_eq_one, mul_inv_eq_one, ← Subtype.ext_iff, ←
-    Subtype.ext_iff, eq_comm, ← Prod.ext_iff] at hxy
+    Subtype.ext_iff, eq_comm, ← Prod.ext_iff] at hxy 
 #align subgroup.mul_injective_of_disjoint Subgroup.mul_injective_of_disjoint
 #align add_subgroup.add_injective_of_disjoint AddSubgroup.add_injective_of_disjoint
 
@@ -3727,12 +3727,12 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
     rintro ⟨x, hx⟩
     refine' ⟨⟨c⁻¹ * x * c, _⟩, _⟩
     · have h := hn.conj_mem _ hx c⁻¹
-      rwa [inv_inv] at h
+      rwa [inv_inv] at h 
     simp only [MonoidHom.codRestrict_apply, MulEquiv.coe_toMonoidHom, MulAut.conj_apply, coe_mk,
       MonoidHom.restrict_apply, Subtype.mk_eq_mk, ← mul_assoc, mul_inv_self, one_mul]
     rw [mul_assoc, mul_inv_self, mul_one]
   have ht' := map_mono (eq_top_iff.1 ht)
-  rw [← MonoidHom.range_eq_map, MonoidHom.range_top_of_surjective _ hs] at ht'
+  rw [← MonoidHom.range_eq_map, MonoidHom.range_top_of_surjective _ hs] at ht' 
   refine' eq_top_iff.2 (le_trans ht' (map_le_iff_le_comap.2 (normal_closure_le_normal _)))
   rw [Set.singleton_subset_iff, SetLike.mem_coe]
   simp only [MonoidHom.codRestrict_apply, MulEquiv.coe_toMonoidHom, MulAut.conj_apply, coe_mk,
Diff
@@ -365,7 +365,7 @@ theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
 
 @[simp, to_additive]
 theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by cases a;
-  simp only [inclusion, [anonymous], MonoidHom.mk'_apply]
+  simp only [inclusion, SetLike.coe_mk, MonoidHom.mk'_apply]
 #align subgroup_class.coe_inclusion SubgroupClass.coe_inclusion
 #align add_subgroup_class.coe_inclusion AddSubgroupClass.coe_inclusion
 
Diff
@@ -2222,7 +2222,7 @@ theorem center_le_normalizer : center G ≤ H.normalizer := fun x hx y => by
 #align subgroup.center_le_normalizer Subgroup.center_le_normalizer
 #align add_subgroup.center_le_normalizer AddSubgroup.center_le_normalizer
 
-open Classical
+open scoped Classical
 
 @[to_additive]
 theorem le_normalizer_of_normal [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) : K ≤ H.normalizer :=
Diff
@@ -135,12 +135,6 @@ class AddSubgroupClass (S G : Type _) [SubNegMonoid G] [SetLike S G] extends Add
 
 attribute [to_additive] InvMemClass SubgroupClass
 
-/- warning: inv_mem_iff -> inv_mem_iff is a dubious translation:
-lean 3 declaration is
-  forall {S : Type.{u1}} {G : Type.{u2}} [_inst_4 : InvolutiveInv.{u2} G] [_inst_5 : SetLike.{u1, u2} S G] [_inst_6 : InvMemClass.{u1, u2} S G (InvolutiveInv.toHasInv.{u2} G _inst_4) _inst_5] {H : S} {x : G}, Iff (Membership.Mem.{u2, u1} G S (SetLike.hasMem.{u1, u2} S G _inst_5) (Inv.inv.{u2} G (InvolutiveInv.toHasInv.{u2} G _inst_4) x) H) (Membership.Mem.{u2, u1} G S (SetLike.hasMem.{u1, u2} S G _inst_5) x H)
-but is expected to have type
-  forall {S : Type.{u2}} {G : Type.{u1}} [_inst_4 : InvolutiveInv.{u1} G] {_inst_5 : SetLike.{u2, u1} S G} [_inst_6 : InvMemClass.{u2, u1} S G (InvolutiveInv.toInv.{u1} G _inst_4) _inst_5] {H : S} {x : G}, Iff (Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_5) (Inv.inv.{u1} G (InvolutiveInv.toInv.{u1} G _inst_4) x) H) (Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_5) x H)
-Case conversion may be inaccurate. Consider using '#align inv_mem_iff inv_mem_iffₓ'. -/
 @[simp, to_additive]
 theorem inv_mem_iff {S G} [InvolutiveInv G] [SetLike S G] [InvMemClass S G] {H : S} {x : G} :
     x⁻¹ ∈ H ↔ x ∈ H :=
@@ -152,12 +146,6 @@ variable {M S : Type _} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M]
 
 include hSM
 
-/- warning: div_mem -> div_mem is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {H : S} {x : M} {y : M}, (Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H) -> (Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) y H) -> (Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toHasDiv.{u1} M _inst_4)) x y) H)
-but is expected to have type
-  forall {M : Type.{u2}} {S : Type.{u1}} [_inst_4 : DivInvMonoid.{u2} M] [_inst_5 : SetLike.{u1, u2} S M] [hSM : SubgroupClass.{u1, u2} S M _inst_4 _inst_5] {H : S} {x : M} {y : M}, (Membership.mem.{u2, u1} M S (SetLike.instMembership.{u1, u2} S M _inst_5) x H) -> (Membership.mem.{u2, u1} M S (SetLike.instMembership.{u1, u2} S M _inst_5) y H) -> (Membership.mem.{u2, u1} M S (SetLike.instMembership.{u1, u2} S M _inst_5) (HDiv.hDiv.{u2, u2, u2} M M M (instHDiv.{u2} M (DivInvMonoid.toDiv.{u2} M _inst_4)) x y) H)
-Case conversion may be inaccurate. Consider using '#align div_mem div_memₓ'. -/
 /-- A subgroup is closed under division. -/
 @[to_additive "An additive subgroup is closed under subtraction."]
 theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
@@ -165,12 +153,6 @@ theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
 #align div_mem div_mem
 #align sub_mem sub_mem
 
-/- warning: zpow_mem -> zpow_mem is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {K : S} {x : M}, (Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x K) -> (forall (n : Int), Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) (HPow.hPow.{u1, 0, u1} M Int M (instHPow.{u1, 0} M Int (DivInvMonoid.Pow.{u1} M _inst_4)) x n) K)
-but is expected to have type
-  forall {M : Type.{u2}} {S : Type.{u1}} [_inst_4 : DivInvMonoid.{u2} M] [_inst_5 : SetLike.{u1, u2} S M] [hSM : SubgroupClass.{u1, u2} S M _inst_4 _inst_5] {K : S} {x : M}, (Membership.mem.{u2, u1} M S (SetLike.instMembership.{u1, u2} S M _inst_5) x K) -> (forall (n : Int), Membership.mem.{u2, u1} M S (SetLike.instMembership.{u1, u2} S M _inst_5) (HPow.hPow.{u2, 0, u2} M Int M (instHPow.{u2, 0} M Int (DivInvMonoid.Pow.{u2} M _inst_4)) x n) K)
-Case conversion may be inaccurate. Consider using '#align zpow_mem zpow_memₓ'. -/
 @[to_additive]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
   | (n : ℕ) => by rw [zpow_ofNat]; exact pow_mem hx n
@@ -184,48 +166,24 @@ variable [SetLike S G] [hSG : SubgroupClass S G]
 
 include hSG
 
-/- warning: div_mem_comm_iff -> div_mem_comm_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {a : G} {b : G}, Iff (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) a b) H) (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) b a) H)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] {a : G} {b : G}, Iff (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) (HDiv.hDiv.{u2, u2, u2} G G G (instHDiv.{u2} G (DivInvMonoid.toDiv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) a b) H) (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) (HDiv.hDiv.{u2, u2, u2} G G G (instHDiv.{u2} G (DivInvMonoid.toDiv.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) b a) H)
-Case conversion may be inaccurate. Consider using '#align div_mem_comm_iff div_mem_comm_iffₓ'. -/
 @[to_additive]
 theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H := by
   rw [← inv_mem_iff, div_eq_mul_inv, div_eq_mul_inv, mul_inv_rev, inv_inv]
 #align div_mem_comm_iff div_mem_comm_iff
 #align sub_mem_comm_iff sub_mem_comm_iff
 
-/- warning: exists_inv_mem_iff_exists_mem -> exists_inv_mem_iff_exists_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {P : G -> Prop}, Iff (Exists.{succ u1} G (fun (x : G) => And (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) (P (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x)))) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) (fun (H : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) => P x)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] {P : G -> Prop}, Iff (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H) (P (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) x)))) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H) (P x)))
-Case conversion may be inaccurate. Consider using '#align exists_inv_mem_iff_exists_mem exists_inv_mem_iff_exists_memₓ'. -/
 @[simp, to_additive]
 theorem exists_inv_mem_iff_exists_mem {P : G → Prop} : (∃ x : G, x ∈ H ∧ P x⁻¹) ↔ ∃ x ∈ H, P x := by
   constructor <;> · rintro ⟨x, x_in, hx⟩; exact ⟨x⁻¹, inv_mem x_in, by simp [hx]⟩
 #align exists_inv_mem_iff_exists_mem exists_inv_mem_iff_exists_mem
 #align exists_neg_mem_iff_exists_mem exists_neg_mem_iff_exists_mem
 
-/- warning: mul_mem_cancel_right -> mul_mem_cancel_right is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {x : G} {y : G}, (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) -> (Iff (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) y x) H) (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) y H))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] {x : G} {y : G}, (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H) -> (Iff (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) y x) H) (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) y H))
-Case conversion may be inaccurate. Consider using '#align mul_mem_cancel_right mul_mem_cancel_rightₓ'. -/
 @[to_additive]
 theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :=
   ⟨fun hba => by simpa using mul_mem hba (inv_mem h), fun hb => mul_mem hb h⟩
 #align mul_mem_cancel_right mul_mem_cancel_right
 #align add_mem_cancel_right add_mem_cancel_right
 
-/- warning: mul_mem_cancel_left -> mul_mem_cancel_left is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {x : G} {y : G}, (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) -> (Iff (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) H) (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) y H))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] {x : G} {y : G}, (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H) -> (Iff (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) x y) H) (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) y H))
-Case conversion may be inaccurate. Consider using '#align mul_mem_cancel_left mul_mem_cancel_leftₓ'. -/
 @[to_additive]
 theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
   ⟨fun hab => by simpa using mul_mem (inv_mem h) hab, mul_mem h⟩
@@ -277,24 +235,12 @@ instance zpow : Pow H ℤ :=
 #align add_subgroup_class.has_zsmul AddSubgroupClass.zsmul
 -/
 
-/- warning: subgroup_class.coe_inv -> SubgroupClass.coe_inv is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {H : S} (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H), Eq.{succ u1} M ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) (Inv.inv.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (SubgroupClass.inv.{u1, u2} M S _inst_4 _inst_5 hSM H) x)) (Inv.inv.{u1} M (DivInvMonoid.toHasInv.{u1} M _inst_4) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) x))
-but is expected to have type
-  forall {M : Type.{u2}} [S : Group.{u2} M] {_inst_4 : Type.{u1}} {_inst_5 : _inst_4} [hSM : SetLike.{u1, u2} _inst_4 M] [H : SubgroupClass.{u1, u2} _inst_4 M (Group.toDivInvMonoid.{u2} M S) hSM] (x : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)), Eq.{succ u2} M (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) (Inv.inv.{u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (SubgroupClass.inv.{u2, u1} M _inst_4 (Group.toDivInvMonoid.{u2} M S) hSM H _inst_5) x)) (Inv.inv.{u2} M (InvOneClass.toInv.{u2} M (DivInvOneMonoid.toInvOneClass.{u2} M (DivisionMonoid.toDivInvOneMonoid.{u2} M (Group.toDivisionMonoid.{u2} M S)))) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) x))
-Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inv SubgroupClass.coe_invₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : M) :=
   rfl
 #align subgroup_class.coe_inv SubgroupClass.coe_inv
 #align add_subgroup_class.coe_neg AddSubgroupClass.coe_neg
 
-/- warning: subgroup_class.coe_div -> SubgroupClass.coe_div is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {H : S} (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (y : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H), Eq.{succ u1} M ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) (HDiv.hDiv.{u1, u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (instHDiv.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (SubgroupClass.div.{u1, u2} M S _inst_4 _inst_5 hSM H)) x y)) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toHasDiv.{u1} M _inst_4)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) x) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) y))
-but is expected to have type
-  forall {M : Type.{u2}} [S : Group.{u2} M] {_inst_4 : Type.{u1}} {_inst_5 : _inst_4} [hSM : SetLike.{u1, u2} _inst_4 M] [H : SubgroupClass.{u1, u2} _inst_4 M (Group.toDivInvMonoid.{u2} M S) hSM] (x : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)), Eq.{succ u2} M (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) (HDiv.hDiv.{u2, u2, u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (instHDiv.{u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (SubgroupClass.div.{u2, u1} M _inst_4 (Group.toDivInvMonoid.{u2} M S) hSM H _inst_5)) x y)) (HDiv.hDiv.{u2, u2, u2} M M M (instHDiv.{u2} M (DivInvMonoid.toDiv.{u2} M (Group.toDivInvMonoid.{u2} M S))) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) x) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) y))
-Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_div SubgroupClass.coe_divₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_div (x y : H) : (↑(x / y) : M) = ↑x / ↑y :=
   rfl
@@ -368,9 +314,6 @@ protected def subtype : H →* G :=
 #align add_subgroup_class.subtype AddSubgroupClass.subtype
 -/
 
-/- warning: subgroup_class.coe_subtype -> SubgroupClass.coeSubtype is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_subtype SubgroupClass.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : (SubgroupClass.subtype H : H → G) = coe :=
   rfl
@@ -379,36 +322,18 @@ theorem coeSubtype : (SubgroupClass.subtype H : H → G) = coe :=
 
 variable {H}
 
-/- warning: subgroup_class.coe_pow -> SubgroupClass.coe_pow is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (n : Nat), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) (HPow.hPow.{u1, 0, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) Nat (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (instHPow.{u1, 0} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) Nat (SubmonoidClass.nPow.{u1, u2} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) S _inst_6 (SubgroupClass.to_submonoidClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6 hSG) H)) x n)) (HPow.hPow.{u1, 0, u1} G Nat G (instHPow.{u1, 0} G Nat (Monoid.Pow.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) x) n)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (n : Nat), Eq.{succ u2} G (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)) (HPow.hPow.{u2, 0, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) Nat (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (instHPow.{u2, 0} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) Nat (SubmonoidClass.nPow.{u2, u1} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)) S _inst_6 (SubgroupClass.toSubmonoidClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6 hSG) H)) x n)) (HPow.hPow.{u2, 0, u2} G Nat G (instHPow.{u2, 0} G Nat (Monoid.Pow.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)) x) n)
-Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_pow SubgroupClass.coe_powₓ'. -/
 @[simp, norm_cast, to_additive coe_smul]
 theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = x ^ n :=
   (SubgroupClass.subtype H : H →* G).map_pow _ _
 #align subgroup_class.coe_pow SubgroupClass.coe_pow
 #align add_subgroup_class.coe_smul AddSubgroupClass.coe_nsmul
 
-/- warning: subgroup_class.coe_zpow -> SubgroupClass.coe_zpow is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (n : Int), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) (HPow.hPow.{u1, 0, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) Int (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (instHPow.{u1, 0} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) Int (SubgroupClass.zpow.{u1, u2} G S (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6 hSG H)) x n)) (HPow.hPow.{u1, 0, u1} G Int G (instHPow.{u1, 0} G Int (DivInvMonoid.Pow.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) x) n)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (n : Int), Eq.{succ u2} G (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)) (HPow.hPow.{u2, 0, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) Int (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (instHPow.{u2, 0} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) Int (SubgroupClass.zpow.{u2, u1} G S (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6 hSG H)) x n)) (HPow.hPow.{u2, 0, u2} G Int G (instHPow.{u2, 0} G Int (DivInvMonoid.Pow.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)) x) n)
-Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_zpow SubgroupClass.coe_zpowₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
   (SubgroupClass.subtype H : H →* G).map_zpow _ _
 #align subgroup_class.coe_zpow SubgroupClass.coe_zpow
 #align add_subgroup_class.coe_zsmul AddSubgroupClass.coe_zsmul
 
-/- warning: subgroup_class.inclusion -> SubgroupClass.inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S}, (LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) -> (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S}, (LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) -> (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))))
-Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion SubgroupClass.inclusionₓ'. -/
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
 @[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
 def inclusion {H K : S} (h : H ≤ K) : H →* K :=
@@ -416,55 +341,34 @@ def inclusion {H K : S} (h : H ≤ K) : H →* K :=
 #align subgroup_class.inclusion SubgroupClass.inclusion
 #align add_subgroup_class.inclusion AddSubgroupClass.inclusion
 
-/- warning: subgroup_class.inclusion_self -> SubgroupClass.inclusion_self is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_self SubgroupClass.inclusion_selfₓ'. -/
 @[simp, to_additive]
 theorem inclusion_self (x : H) : inclusion le_rfl x = x := by cases x; rfl
 #align subgroup_class.inclusion_self SubgroupClass.inclusion_self
 #align add_subgroup_class.inclusion_self AddSubgroupClass.inclusion_self
 
-/- warning: subgroup_class.inclusion_mk -> SubgroupClass.inclusion_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_mk SubgroupClass.inclusion_mkₓ'. -/
 @[simp, to_additive]
 theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ :=
   rfl
 #align subgroup_class.inclusion_mk SubgroupClass.inclusion_mk
 #align add_subgroup_class.inclusion_mk AddSubgroupClass.inclusion_mk
 
-/- warning: subgroup_class.inclusion_right -> SubgroupClass.inclusion_right is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_right SubgroupClass.inclusion_rightₓ'. -/
 @[to_additive]
 theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x := by
   cases x; rfl
 #align subgroup_class.inclusion_right SubgroupClass.inclusion_right
 #align add_subgroup_class.inclusion_right AddSubgroupClass.inclusion_right
 
-/- warning: subgroup_class.inclusion_inclusion -> SubgroupClass.inclusion_inclusion is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusionₓ'. -/
 @[simp]
 theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
     inclusion hKL (inclusion hHK x) = inclusion (hHK.trans hKL) x := by cases x; rfl
 #align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusion
 
-/- warning: subgroup_class.coe_inclusion -> SubgroupClass.coe_inclusion is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inclusion SubgroupClass.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by cases a;
   simp only [inclusion, [anonymous], MonoidHom.mk'_apply]
 #align subgroup_class.coe_inclusion SubgroupClass.coe_inclusion
 #align add_subgroup_class.coe_inclusion AddSubgroupClass.coe_inclusion
 
-/- warning: subgroup_class.subtype_comp_inclusion -> SubgroupClass.subtype_comp_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} (hH : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K), Eq.{succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S K _inst_6 hSG) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hH)) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} (hH : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K), Eq.{succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) G (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S K _inst_6 hSG) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hH)) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)
-Case conversion may be inaccurate. Consider using '#align subgroup_class.subtype_comp_inclusion SubgroupClass.subtype_comp_inclusionₓ'. -/
 @[simp, to_additive]
 theorem subtype_comp_inclusion {H K : S} (hH : H ≤ K) :
     (SubgroupClass.subtype K).comp (inclusion hH) = SubgroupClass.subtype H := by ext;
@@ -516,48 +420,24 @@ instance : SubgroupClass (Subgroup G) G
   one_mem := Subgroup.one_mem'
   inv_mem := Subgroup.inv_mem'
 
-/- warning: subgroup.mem_carrier -> Subgroup.mem_carrier is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x (Subgroup.carrier.{u1} G _inst_1 s)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 s)))) (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 s)
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_carrier Subgroup.mem_carrierₓ'. -/
 @[simp, to_additive]
 theorem mem_carrier {s : Subgroup G} {x : G} : x ∈ s.carrier ↔ x ∈ s :=
   Iff.rfl
 #align subgroup.mem_carrier Subgroup.mem_carrier
 #align add_subgroup.mem_carrier AddSubgroup.mem_carrier
 
-/- warning: subgroup.mem_mk -> Subgroup.mem_mk is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {x : G} (h_one : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) s) (h_inv : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) s)), Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.mk.{u1} G _inst_1 s h_one h_mul h_inv)) (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x s)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {x : G} (h_one : forall {a : G} {b : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) b s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : s (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (MulOneClass.toOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (h_inv : forall {x : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul)))) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul))))), Iff (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 (Subgroup.mk.{u1} G _inst_1 (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul) h_inv)) (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x s)
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_mk Subgroup.mem_mkₓ'. -/
 @[simp, to_additive]
 theorem mem_mk {s : Set G} {x : G} (h_one) (h_mul) (h_inv) : x ∈ mk s h_one h_mul h_inv ↔ x ∈ s :=
   Iff.rfl
 #align subgroup.mem_mk Subgroup.mem_mk
 #align add_subgroup.mem_mk AddSubgroup.mem_mk
 
-/- warning: subgroup.coe_set_mk -> Subgroup.coe_set_mk is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} (h_one : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) s) (h_inv : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) s)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.mk.{u1} G _inst_1 s h_one h_mul h_inv)) s
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} (h_one : forall {a : G} {b : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) b s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : s (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (MulOneClass.toOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (h_inv : forall {x : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul)))) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul))))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.mk.{u1} G _inst_1 (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul) h_inv)) s
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_set_mk Subgroup.coe_set_mkₓ'. -/
 @[simp, to_additive]
 theorem coe_set_mk {s : Set G} (h_one) (h_mul) (h_inv) : (mk s h_one h_mul h_inv : Set G) = s :=
   rfl
 #align subgroup.coe_set_mk Subgroup.coe_set_mk
 #align add_subgroup.coe_set_mk AddSubgroup.coe_set_mk
 
-/- warning: subgroup.mk_le_mk -> Subgroup.mk_le_mk is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G} (h_one : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) s) (h_inv : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) s)) (h_one' : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) t)) (h_mul' : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) t) (h_inv' : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) t)), Iff (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)))) (Subgroup.mk.{u1} G _inst_1 s h_one h_mul h_inv) (Subgroup.mk.{u1} G _inst_1 t h_one' h_mul' h_inv')) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s t)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G} (h_one : forall {a : G} {b : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) b s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : s (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (MulOneClass.toOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (h_inv : forall {x : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul)))) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul))))) (h_one' : forall {a : G} {b : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a t) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) b t) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) t)) (h_mul' : t (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (MulOneClass.toOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (h_inv' : forall {x : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) t h_one') h_mul')))) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) t h_one') h_mul'))))), Iff (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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) (Subgroup.mk.{u1} G _inst_1 (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul) h_inv) (Subgroup.mk.{u1} G _inst_1 (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) t h_one') h_mul') h_inv')) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s t)
-Case conversion may be inaccurate. Consider using '#align subgroup.mk_le_mk Subgroup.mk_le_mkₓ'. -/
 @[simp, to_additive]
 theorem mk_le_mk {s t : Set G} (h_one) (h_mul) (h_inv) (h_one') (h_mul') (h_inv') :
     mk s h_one h_mul h_inv ≤ mk t h_one' h_mul' h_inv' ↔ s ⊆ t :=
@@ -576,24 +456,12 @@ initialize_simps_projections Subgroup (carrier → coe)
 
 initialize_simps_projections AddSubgroup (carrier → coe)
 
-/- warning: subgroup.coe_to_submonoid -> Subgroup.coe_toSubmonoid is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.instSetLikeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_to_submonoid Subgroup.coe_toSubmonoidₓ'. -/
 @[simp, to_additive]
 theorem coe_toSubmonoid (K : Subgroup G) : (K.toSubmonoid : Set G) = K :=
   rfl
 #align subgroup.coe_to_submonoid Subgroup.coe_toSubmonoid
 #align add_subgroup.coe_to_add_submonoid AddSubgroup.coe_toAddSubmonoid
 
-/- warning: subgroup.mem_to_submonoid -> Subgroup.mem_toSubmonoid is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (x : G), Iff (Membership.Mem.{u1, u1} G (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (x : G), Iff (Membership.mem.{u1, u1} G (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.instSetLikeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 K)
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_to_submonoid Subgroup.mem_toSubmonoidₓ'. -/
 @[simp, to_additive]
 theorem mem_toSubmonoid (K : Subgroup G) (x : G) : x ∈ K.toSubmonoid ↔ x ∈ K :=
   Iff.rfl
@@ -616,12 +484,6 @@ theorem toSubmonoid_eq {p q : Subgroup G} : p.toSubmonoid = q.toSubmonoid ↔ p
 #align add_subgroup.to_add_submonoid_eq AddSubgroup.toAddSubmonoid_eq
 -/
 
-/- warning: subgroup.to_submonoid_strict_mono -> Subgroup.toSubmonoid_strictMono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], StrictMono.{u1, u1} (Subgroup.{u1} G _inst_1) (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{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))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.toSubmonoid.{u1} G _inst_1)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], StrictMono.{u1, u1} (Subgroup.{u1} G _inst_1) (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instCompleteLatticeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Subgroup.toSubmonoid.{u1} G _inst_1)
-Case conversion may be inaccurate. Consider using '#align subgroup.to_submonoid_strict_mono Subgroup.toSubmonoid_strictMonoₓ'. -/
 @[to_additive, mono]
 theorem toSubmonoid_strictMono : StrictMono (toSubmonoid : Subgroup G → Submonoid G) := fun _ _ =>
   id
@@ -630,12 +492,6 @@ theorem toSubmonoid_strictMono : StrictMono (toSubmonoid : Subgroup G → Submon
 
 attribute [mono] AddSubgroup.toAddSubmonoid_strictMono
 
-/- warning: subgroup.to_submonoid_mono -> Subgroup.toSubmonoid_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Monotone.{u1, u1} (Subgroup.{u1} G _inst_1) (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{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))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.toSubmonoid.{u1} G _inst_1)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Monotone.{u1, u1} (Subgroup.{u1} G _inst_1) (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instCompleteLatticeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Subgroup.toSubmonoid.{u1} G _inst_1)
-Case conversion may be inaccurate. Consider using '#align subgroup.to_submonoid_mono Subgroup.toSubmonoid_monoₓ'. -/
 @[to_additive, mono]
 theorem toSubmonoid_mono : Monotone (toSubmonoid : Subgroup G → Submonoid G) :=
   toSubmonoid_strictMono.Monotone
@@ -644,12 +500,6 @@ theorem toSubmonoid_mono : Monotone (toSubmonoid : Subgroup G → Submonoid G) :
 
 attribute [mono] AddSubgroup.toAddSubmonoid_mono
 
-/- warning: subgroup.to_submonoid_le -> Subgroup.toSubmonoid_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {q : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toHasLe.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Subgroup.toSubmonoid.{u1} G _inst_1 p) (Subgroup.toSubmonoid.{u1} G _inst_1 q)) (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)))) p q)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {q : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toLE.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instCompleteLatticeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Subgroup.toSubmonoid.{u1} G _inst_1 p) (Subgroup.toSubmonoid.{u1} G _inst_1 q)) (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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) p q)
-Case conversion may be inaccurate. Consider using '#align subgroup.to_submonoid_le Subgroup.toSubmonoid_leₓ'. -/
 @[simp, to_additive]
 theorem toSubmonoid_le {p q : Subgroup G} : p.toSubmonoid ≤ q.toSubmonoid ↔ p ≤ q :=
   Iff.rfl
@@ -665,12 +515,6 @@ end Subgroup
 
 section mul_add
 
-/- warning: subgroup.to_add_subgroup -> Subgroup.toAddSubgroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (Subgroup.{u1} G _inst_1) (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{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)))) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.setLike.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (Subgroup.{u1} G _inst_1) (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) (Preorder.toLE.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.instSetLikeAddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align subgroup.to_add_subgroup Subgroup.toAddSubgroupₓ'. -/
 /-- Supgroups of a group `G` are isomorphic to additive subgroups of `additive G`. -/
 @[simps]
 def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G)
@@ -682,23 +526,11 @@ def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G)
   map_rel_iff' a b := Iff.rfl
 #align subgroup.to_add_subgroup Subgroup.toAddSubgroup
 
-/- warning: add_subgroup.to_subgroup' -> AddSubgroup.toSubgroup' is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.setLike.{u1} (Additive.{u1} G) (Additive.addGroup.{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))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.instSetLikeAddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1))))) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1))))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.to_subgroup' AddSubgroup.toSubgroup'ₓ'. -/
 /-- Additive subgroup of an additive group `additive G` are isomorphic to subgroup of `G`. -/
 abbrev AddSubgroup.toSubgroup' : AddSubgroup (Additive G) ≃o Subgroup G :=
   Subgroup.toAddSubgroup.symm
 #align add_subgroup.to_subgroup' AddSubgroup.toSubgroup'
 
-/- warning: add_subgroup.to_subgroup -> AddSubgroup.toSubgroup is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (AddSubgroup.{u1} A _inst_3) (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.setLike.{u1} A _inst_3)))) (Preorder.toHasLe.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.setLike.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)))))
-but is expected to have type
-  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (AddSubgroup.{u1} A _inst_3) (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Preorder.toLE.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.instSetLikeAddSubgroup.{u1} A _inst_3)))) (Preorder.toLE.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.instSetLikeSubgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)))))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.to_subgroup AddSubgroup.toSubgroupₓ'. -/
 /-- Additive supgroups of an additive group `A` are isomorphic to subgroups of `multiplicative A`.
 -/
 @[simps]
@@ -711,12 +543,6 @@ def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A)
   map_rel_iff' a b := Iff.rfl
 #align add_subgroup.to_subgroup AddSubgroup.toSubgroup
 
-/- warning: subgroup.to_add_subgroup' -> Subgroup.toAddSubgroup' is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (AddSubgroup.{u1} A _inst_3) (Preorder.toHasLe.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.setLike.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3))))) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.setLike.{u1} A _inst_3))))
-but is expected to have type
-  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (AddSubgroup.{u1} A _inst_3) (Preorder.toLE.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.instSetLikeSubgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3))))) (Preorder.toLE.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.instSetLikeAddSubgroup.{u1} A _inst_3))))
-Case conversion may be inaccurate. Consider using '#align subgroup.to_add_subgroup' Subgroup.toAddSubgroup'ₓ'. -/
 /-- Subgroups of an additive group `multiplicative A` are isomorphic to additive subgroups of `A`.
 -/
 abbrev Subgroup.toAddSubgroup' : Subgroup (Multiplicative A) ≃o AddSubgroup A :=
@@ -729,12 +555,6 @@ namespace Subgroup
 
 variable (H K : Subgroup G)
 
-/- warning: subgroup.copy -> Subgroup.copy is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (s : Set.{u1} G), (Eq.{succ u1} (Set.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)) -> (Subgroup.{u1} G _inst_1)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (s : Set.{u1} G), (Eq.{succ u1} (Set.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) -> (Subgroup.{u1} G _inst_1)
-Case conversion may be inaccurate. Consider using '#align subgroup.copy Subgroup.copyₓ'. -/
 /-- Copy of a subgroup with a new `carrier` equal to the old one. Useful to fix definitional
 equalities.-/
 @[to_additive
@@ -748,36 +568,18 @@ protected def copy (K : Subgroup G) (s : Set G) (hs : s = K) : Subgroup G
 #align subgroup.copy Subgroup.copy
 #align add_subgroup.copy AddSubgroup.copy
 
-/- warning: subgroup.coe_copy -> Subgroup.coe_copy is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (s : Set.{u1} G) (hs : Eq.{succ u1} (Set.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.copy.{u1} G _inst_1 K s hs)) s
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (s : Set.{u1} G) (hs : Eq.{succ u1} (Set.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.copy.{u1} G _inst_1 K s hs)) s
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_copy Subgroup.coe_copyₓ'. -/
 @[simp, to_additive]
 theorem coe_copy (K : Subgroup G) (s : Set G) (hs : s = ↑K) : (K.copy s hs : Set G) = s :=
   rfl
 #align subgroup.coe_copy Subgroup.coe_copy
 #align add_subgroup.coe_copy AddSubgroup.coe_copy
 
-/- warning: subgroup.copy_eq -> Subgroup.copy_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (s : Set.{u1} G) (hs : Eq.{succ u1} (Set.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.copy.{u1} G _inst_1 K s hs) K
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) (s : Set.{u1} G) (hs : Eq.{succ u1} (Set.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.copy.{u1} G _inst_1 K s hs) K
-Case conversion may be inaccurate. Consider using '#align subgroup.copy_eq Subgroup.copy_eqₓ'. -/
 @[to_additive]
 theorem copy_eq (K : Subgroup G) (s : Set G) (hs : s = ↑K) : K.copy s hs = K :=
   SetLike.coe_injective hs
 #align subgroup.copy_eq Subgroup.copy_eq
 #align add_subgroup.copy_eq AddSubgroup.copy_eq
 
-/- warning: subgroup.ext -> Subgroup.ext is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (forall (x : G), Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (forall (x : G), Iff (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 H) (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 K)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.ext Subgroup.extₓ'. -/
 /-- Two subgroups are equal if they have the same elements. -/
 @[ext, to_additive "Two `add_subgroup`s are equal if they have the same elements."]
 theorem ext {H K : Subgroup G} (h : ∀ x, x ∈ H ↔ x ∈ K) : H = K :=
@@ -785,12 +587,6 @@ theorem ext {H K : Subgroup G} (h : ∀ x, x ∈ H ↔ x ∈ K) : H = K :=
 #align subgroup.ext Subgroup.ext
 #align add_subgroup.ext AddSubgroup.ext
 
-/- warning: subgroup.one_mem -> Subgroup.one_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) H
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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)) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))) H
-Case conversion may be inaccurate. Consider using '#align subgroup.one_mem Subgroup.one_memₓ'. -/
 /-- A subgroup contains the group's 1. -/
 @[to_additive "An `add_subgroup` contains the group's 0."]
 protected theorem one_mem : (1 : G) ∈ H :=
@@ -798,12 +594,6 @@ protected theorem one_mem : (1 : G) ∈ H :=
 #align subgroup.one_mem Subgroup.one_mem
 #align add_subgroup.zero_mem AddSubgroup.zero_mem
 
-/- warning: subgroup.mul_mem -> Subgroup.mul_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : 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 H) -> (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)) y H) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.mul_mem Subgroup.mul_memₓ'. -/
 /-- A subgroup is closed under multiplication. -/
 @[to_additive "An `add_subgroup` is closed under addition."]
 protected theorem mul_mem {x y : G} : x ∈ H → y ∈ H → x * y ∈ H :=
@@ -811,12 +601,6 @@ protected theorem mul_mem {x y : G} : x ∈ H → y ∈ H → x * y ∈ H :=
 #align subgroup.mul_mem Subgroup.mul_mem
 #align add_subgroup.add_mem AddSubgroup.add_mem
 
-/- warning: subgroup.inv_mem -> Subgroup.inv_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {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 H) -> (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)) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.inv_mem Subgroup.inv_memₓ'. -/
 /-- A subgroup is closed under inverse. -/
 @[to_additive "An `add_subgroup` is closed under inverse."]
 protected theorem inv_mem {x : G} : x ∈ H → x⁻¹ ∈ H :=
@@ -824,12 +608,6 @@ protected theorem inv_mem {x : G} : x ∈ H → x⁻¹ ∈ H :=
 #align subgroup.inv_mem Subgroup.inv_mem
 #align add_subgroup.neg_mem AddSubgroup.neg_mem
 
-/- warning: subgroup.div_mem -> Subgroup.div_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) x y) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : 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 H) -> (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)) y H) -> (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)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) x y) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.div_mem Subgroup.div_memₓ'. -/
 /-- A subgroup is closed under division. -/
 @[to_additive "An `add_subgroup` is closed under subtraction."]
 protected theorem div_mem {x y : G} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H :=
@@ -837,36 +615,18 @@ protected theorem div_mem {x y : G} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H
 #align subgroup.div_mem Subgroup.div_mem
 #align add_subgroup.sub_mem AddSubgroup.sub_mem
 
-/- warning: subgroup.inv_mem_iff -> Subgroup.inv_mem_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G}, Iff (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)) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) H) (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 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.inv_mem_iff Subgroup.inv_mem_iffₓ'. -/
 @[to_additive]
 protected theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
   inv_mem_iff
 #align subgroup.inv_mem_iff Subgroup.inv_mem_iff
 #align add_subgroup.neg_mem_iff AddSubgroup.neg_mem_iff
 
-/- warning: subgroup.div_mem_comm_iff -> Subgroup.div_mem_comm_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {a : G} {b : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) a b) H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) b a) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {a : G} {b : G}, Iff (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)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) a b) H) (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)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) b a) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.div_mem_comm_iff Subgroup.div_mem_comm_iffₓ'. -/
 @[to_additive]
 protected theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H :=
   div_mem_comm_iff
 #align subgroup.div_mem_comm_iff Subgroup.div_mem_comm_iff
 #align add_subgroup.sub_mem_comm_iff AddSubgroup.sub_mem_comm_iff
 
-/- warning: subgroup.exists_inv_mem_iff_exists_mem -> Subgroup.exists_inv_mem_iff_exists_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {P : G -> Prop}, Iff (Exists.{succ u1} G (fun (x : G) => And (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) (P (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x)))) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) (fun (H : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) => P x)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {P : G -> Prop}, Iff (Exists.{succ u1} G (fun (x : G) => And (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 K) (P (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x)))) (Exists.{succ u1} G (fun (x : G) => And (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 K) (P x)))
-Case conversion may be inaccurate. Consider using '#align subgroup.exists_inv_mem_iff_exists_mem Subgroup.exists_inv_mem_iff_exists_memₓ'. -/
 @[to_additive]
 protected theorem exists_inv_mem_iff_exists_mem (K : Subgroup G) {P : G → Prop} :
     (∃ x : G, x ∈ K ∧ P x⁻¹) ↔ ∃ x ∈ K, P x :=
@@ -874,60 +634,30 @@ protected theorem exists_inv_mem_iff_exists_mem (K : Subgroup G) {P : G → Prop
 #align subgroup.exists_inv_mem_iff_exists_mem Subgroup.exists_inv_mem_iff_exists_mem
 #align add_subgroup.exists_neg_mem_iff_exists_mem AddSubgroup.exists_neg_mem_iff_exists_mem
 
-/- warning: subgroup.mul_mem_cancel_right -> Subgroup.mul_mem_cancel_right is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) -> (Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) y x) H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : 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 H) -> (Iff (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) y x) H) (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)) y H))
-Case conversion may be inaccurate. Consider using '#align subgroup.mul_mem_cancel_right Subgroup.mul_mem_cancel_rightₓ'. -/
 @[to_additive]
 protected theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :=
   mul_mem_cancel_right h
 #align subgroup.mul_mem_cancel_right Subgroup.mul_mem_cancel_right
 #align add_subgroup.add_mem_cancel_right AddSubgroup.add_mem_cancel_right
 
-/- warning: subgroup.mul_mem_cancel_left -> Subgroup.mul_mem_cancel_left is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) -> (Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {x : G} {y : 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 H) -> (Iff (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) H) (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)) y H))
-Case conversion may be inaccurate. Consider using '#align subgroup.mul_mem_cancel_left Subgroup.mul_mem_cancel_leftₓ'. -/
 @[to_additive]
 protected theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
   mul_mem_cancel_left h
 #align subgroup.mul_mem_cancel_left Subgroup.mul_mem_cancel_left
 #align add_subgroup.add_mem_cancel_left AddSubgroup.add_mem_cancel_left
 
-/- warning: subgroup.pow_mem -> Subgroup.pow_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) -> (forall (n : Nat), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HPow.hPow.{u1, 0, u1} G Nat G (instHPow.{u1, 0} G Nat (Monoid.Pow.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x n) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {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 K) -> (forall (n : Nat), 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)) (HPow.hPow.{u1, 0, u1} G Nat G (instHPow.{u1, 0} G Nat (Monoid.Pow.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x n) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.pow_mem Subgroup.pow_memₓ'. -/
 @[to_additive AddSubgroup.nsmul_mem]
 protected theorem pow_mem {x : G} (hx : x ∈ K) : ∀ n : ℕ, x ^ n ∈ K :=
   pow_mem hx
 #align subgroup.pow_mem Subgroup.pow_mem
 #align add_subgroup.nsmul_mem AddSubgroup.nsmul_mem
 
-/- warning: subgroup.zpow_mem -> Subgroup.zpow_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) -> (forall (n : Int), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HPow.hPow.{u1, 0, u1} G Int G (instHPow.{u1, 0} G Int (DivInvMonoid.Pow.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) x n) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {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 K) -> (forall (n : Int), 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)) (HPow.hPow.{u1, 0, u1} G Int G (instHPow.{u1, 0} G Int (DivInvMonoid.Pow.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) x n) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.zpow_mem Subgroup.zpow_memₓ'. -/
 @[to_additive]
 protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K :=
   zpow_mem hx
 #align subgroup.zpow_mem Subgroup.zpow_mem
 #align add_subgroup.zsmul_mem AddSubgroup.zsmul_mem
 
-/- warning: subgroup.of_div -> Subgroup.ofDiv is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), (Set.Nonempty.{u1} G s) -> (forall (x : G), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x s) -> (forall (y : G), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) y s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) y)) s))) -> (Subgroup.{u1} G _inst_1)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), (Set.Nonempty.{u1} G s) -> (forall (x : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x s) -> (forall (y : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) y s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) y)) s))) -> (Subgroup.{u1} G _inst_1)
-Case conversion may be inaccurate. Consider using '#align subgroup.of_div Subgroup.ofDivₓ'. -/
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
@@ -944,12 +674,6 @@ def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ (x) (_ : x ∈ s) (y) (_ : y
 #align subgroup.of_div Subgroup.ofDiv
 #align add_subgroup.of_sub AddSubgroup.ofSub
 
-/- warning: subgroup.has_mul -> Subgroup.mul is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Mul.{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)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Mul.{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 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.has_mul Subgroup.mulₓ'. -/
 /-- A subgroup of a group inherits a multiplication. -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits an addition."]
 instance mul : Mul H :=
@@ -957,12 +681,6 @@ instance mul : Mul H :=
 #align subgroup.has_mul Subgroup.mul
 #align add_subgroup.has_add AddSubgroup.add
 
-/- warning: subgroup.has_one -> Subgroup.one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), One.{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)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), One.{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 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.has_one Subgroup.oneₓ'. -/
 /-- A subgroup of a group inherits a 1. -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits a zero."]
 instance one : One H :=
@@ -970,12 +688,6 @@ instance one : One H :=
 #align subgroup.has_one Subgroup.one
 #align add_subgroup.has_zero AddSubgroup.zero
 
-/- warning: subgroup.has_inv -> Subgroup.inv is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Inv.{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)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Inv.{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 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.has_inv Subgroup.invₓ'. -/
 /-- A subgroup of a group inherits an inverse. -/
 @[to_additive "A `add_subgroup` of a `add_group` inherits an inverse."]
 instance inv : Inv H :=
@@ -983,12 +695,6 @@ instance inv : Inv H :=
 #align subgroup.has_inv Subgroup.inv
 #align add_subgroup.has_neg AddSubgroup.neg
 
-/- warning: subgroup.has_div -> Subgroup.div is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Div.{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)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Div.{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 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.has_div Subgroup.divₓ'. -/
 /-- A subgroup of a group inherits a division -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits a subtraction."]
 instance div : Div H :=
@@ -996,23 +702,11 @@ instance div : Div H :=
 #align subgroup.has_div Subgroup.div
 #align add_subgroup.has_sub AddSubgroup.sub
 
-/- warning: add_subgroup.has_nsmul -> AddSubgroup.nsmul is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_4 : AddGroup.{u1} G] {H : AddSubgroup.{u1} G _inst_4}, SMul.{0, u1} Nat (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} G _inst_4) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} G _inst_4) G (AddSubgroup.setLike.{u1} G _inst_4)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_4 : AddGroup.{u1} G] {H : AddSubgroup.{u1} G _inst_4}, SMul.{0, u1} Nat (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (AddSubgroup.{u1} G _inst_4) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} G _inst_4) G (AddSubgroup.instSetLikeAddSubgroup.{u1} G _inst_4)) x H))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.has_nsmul AddSubgroup.nsmulₓ'. -/
 /-- An `add_subgroup` of an `add_group` inherits a natural scaling. -/
 instance AddSubgroup.nsmul {G} [AddGroup G] {H : AddSubgroup G} : SMul ℕ H :=
   ⟨fun n a => ⟨n • a, H.nsmul_mem a.2 n⟩⟩
 #align add_subgroup.has_nsmul AddSubgroup.nsmul
 
-/- warning: subgroup.has_npow -> Subgroup.npow is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Pow.{u1, 0} (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)) H) Nat
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Pow.{u1, 0} (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 H)) Nat
-Case conversion may be inaccurate. Consider using '#align subgroup.has_npow Subgroup.npowₓ'. -/
 /-- A subgroup of a group inherits a natural power -/
 @[to_additive]
 instance npow : Pow H ℕ :=
@@ -1020,23 +714,11 @@ instance npow : Pow H ℕ :=
 #align subgroup.has_npow Subgroup.npow
 #align add_subgroup.has_nsmul AddSubgroup.nsmul
 
-/- warning: add_subgroup.has_zsmul -> AddSubgroup.zsmul is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_4 : AddGroup.{u1} G] {H : AddSubgroup.{u1} G _inst_4}, SMul.{0, u1} Int (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} G _inst_4) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} G _inst_4) G (AddSubgroup.setLike.{u1} G _inst_4)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_4 : AddGroup.{u1} G] {H : AddSubgroup.{u1} G _inst_4}, SMul.{0, u1} Int (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (AddSubgroup.{u1} G _inst_4) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} G _inst_4) G (AddSubgroup.instSetLikeAddSubgroup.{u1} G _inst_4)) x H))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.has_zsmul AddSubgroup.zsmulₓ'. -/
 /-- An `add_subgroup` of an `add_group` inherits an integer scaling. -/
 instance AddSubgroup.zsmul {G} [AddGroup G] {H : AddSubgroup G} : SMul ℤ H :=
   ⟨fun n a => ⟨n • a, H.zsmul_mem a.2 n⟩⟩
 #align add_subgroup.has_zsmul AddSubgroup.zsmul
 
-/- warning: subgroup.has_zpow -> Subgroup.zpow is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Pow.{u1, 0} (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)) H) Int
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Pow.{u1, 0} (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 H)) Int
-Case conversion may be inaccurate. Consider using '#align subgroup.has_zpow Subgroup.zpowₓ'. -/
 /-- A subgroup of a group inherits an integer power -/
 @[to_additive]
 instance zpow : Pow H ℤ :=
@@ -1044,108 +726,54 @@ instance zpow : Pow H ℤ :=
 #align subgroup.has_zpow Subgroup.zpow
 #align add_subgroup.has_zsmul AddSubgroup.zsmul
 
-/- warning: subgroup.coe_mul -> Subgroup.coe_mul is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (x : 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)) H) (y : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) (HMul.hMul.{u1, 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)) H) (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)) H) (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)) H) (instHMul.{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)) H) (Subgroup.mul.{u1} G _inst_1 H)) x y)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) x) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) y))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (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 H)) (y : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) (HMul.hMul.{u1, 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 H)) (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 H)) (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 H)) (instHMul.{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 H)) (Subgroup.mul.{u1} G _inst_1 H)) x y)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) x) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) y))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_mul Subgroup.coe_mulₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_mul (x y : H) : (↑(x * y) : G) = ↑x * ↑y :=
   rfl
 #align subgroup.coe_mul Subgroup.coe_mul
 #align add_subgroup.coe_add AddSubgroup.coe_add
 
-/- warning: subgroup.coe_one -> Subgroup.coe_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) (OfNat.ofNat.{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)) H) 1 (OfNat.mk.{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)) H) 1 (One.one.{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)) H) (Subgroup.one.{u1} G _inst_1 H))))) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) (OfNat.ofNat.{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 H)) 1 (One.toOfNat1.{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 H)) (Subgroup.one.{u1} G _inst_1 H)))) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_one Subgroup.coe_oneₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_one : ((1 : H) : G) = 1 :=
   rfl
 #align subgroup.coe_one Subgroup.coe_one
 #align add_subgroup.coe_zero AddSubgroup.coe_zero
 
-/- warning: subgroup.coe_inv -> Subgroup.coe_inv is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (x : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) (Inv.inv.{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)) H) (Subgroup.inv.{u1} G _inst_1 H) x)) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) x))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) (Inv.inv.{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 H)) (Subgroup.inv.{u1} G _inst_1 H) x)) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) x))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_inv Subgroup.coe_invₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : G) :=
   rfl
 #align subgroup.coe_inv Subgroup.coe_inv
 #align add_subgroup.coe_neg AddSubgroup.coe_neg
 
-/- warning: subgroup.coe_div -> Subgroup.coe_div is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (x : 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)) H) (y : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) (HDiv.hDiv.{u1, 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)) H) (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)) H) (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)) H) (instHDiv.{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)) H) (Subgroup.div.{u1} G _inst_1 H)) x y)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) x) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) y))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (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 H)) (y : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) (HDiv.hDiv.{u1, 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 H)) (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 H)) (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 H)) (instHDiv.{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 H)) (Subgroup.div.{u1} G _inst_1 H)) x y)) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) x) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) y))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_div Subgroup.coe_divₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_div (x y : H) : (↑(x / y) : G) = ↑x / ↑y :=
   rfl
 #align subgroup.coe_div Subgroup.coe_div
 #align add_subgroup.coe_sub AddSubgroup.coe_sub
 
-/- warning: subgroup.coe_mk -> Subgroup.coe_mk is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (x : G) (hx : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) G (HasLiftT.mk.{succ u1, succ u1} (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) G (CoeTCₓ.coe.{succ u1, succ u1} (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) G (coeBase.{succ u1, succ u1} (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) x hx)) x
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (x : G) (hx : 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 H), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) (Subtype.mk.{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 H) x hx)) x
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_mk Subgroup.coe_mkₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_mk (x : G) (hx : x ∈ H) : ((⟨x, hx⟩ : H) : G) = x :=
   rfl
 #align subgroup.coe_mk Subgroup.coe_mk
 #align add_subgroup.coe_mk AddSubgroup.coe_mk
 
-/- warning: subgroup.coe_pow -> Subgroup.coe_pow is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (x : 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)) H) (n : Nat), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) (HPow.hPow.{u1, 0, 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)) H) Nat (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)) H) (instHPow.{u1, 0} (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)) H) Nat (Subgroup.npow.{u1} G _inst_1 H)) x n)) (HPow.hPow.{u1, 0, u1} G Nat G (instHPow.{u1, 0} G Nat (Monoid.Pow.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) x) n)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (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 H)) (n : Nat), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) (HPow.hPow.{u1, 0, 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 H)) Nat (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 H)) (instHPow.{u1, 0} (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 H)) Nat (Subgroup.npow.{u1} G _inst_1 H)) x n)) (HPow.hPow.{u1, 0, u1} G Nat G (instHPow.{u1, 0} G Nat (Monoid.Pow.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) x) n)
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_pow Subgroup.coe_powₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = x ^ n :=
   rfl
 #align subgroup.coe_pow Subgroup.coe_pow
 #align add_subgroup.coe_nsmul AddSubgroup.coe_nsmul
 
-/- warning: subgroup.coe_zpow -> Subgroup.coe_zpow is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (x : 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)) H) (n : Int), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) (HPow.hPow.{u1, 0, 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)) H) Int (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)) H) (instHPow.{u1, 0} (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)) H) Int (Subgroup.zpow.{u1} G _inst_1 H)) x n)) (HPow.hPow.{u1, 0, u1} G Int G (instHPow.{u1, 0} G Int (DivInvMonoid.Pow.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) x) n)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (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 H)) (n : Int), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) (HPow.hPow.{u1, 0, 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 H)) Int (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 H)) (instHPow.{u1, 0} (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 H)) Int (Subgroup.zpow.{u1} G _inst_1 H)) x n)) (HPow.hPow.{u1, 0, u1} G Int G (instHPow.{u1, 0} G Int (DivInvMonoid.Pow.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) x) n)
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_zpow Subgroup.coe_zpowₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
   rfl
 #align subgroup.coe_zpow Subgroup.coe_zpow
 #align add_subgroup.coe_zsmul AddSubgroup.coe_zsmul
 
-/- warning: subgroup.mk_eq_one_iff -> Subgroup.mk_eq_one_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {g : G} {h : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g H}, Iff (Eq.{succ u1} (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) g h) (OfNat.ofNat.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) 1 (OfNat.mk.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) 1 (One.one.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)) (Subgroup.one.{u1} G _inst_1 H))))) (Eq.{succ u1} G g (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {g : G} {h : 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)) g H}, Iff (Eq.{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 H)) (Subtype.mk.{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 H) g h) (OfNat.ofNat.{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 H)) 1 (One.toOfNat1.{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 H)) (Subgroup.one.{u1} G _inst_1 H)))) (Eq.{succ u1} G g (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mk_eq_one_iff Subgroup.mk_eq_one_iffₓ'. -/
 @[simp, to_additive]
 theorem mk_eq_one_iff {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 :=
   show (⟨g, h⟩ : H) = (⟨1, H.one_mem⟩ : H) ↔ g = 1 by simp
 #align subgroup.mk_eq_one_iff Subgroup.mk_eq_one_iff
 #align add_subgroup.mk_eq_zero_iff AddSubgroup.mk_eq_zero_iff
 
-/- warning: subgroup.to_group -> Subgroup.toGroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_4 : Group.{u1} G] (H : Subgroup.{u1} G _inst_4), Group.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_4) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_4) G (Subgroup.setLike.{u1} G _inst_4)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_4 : Group.{u1} G] (H : Subgroup.{u1} G _inst_4), Group.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_4) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_4)) x H))
-Case conversion may be inaccurate. Consider using '#align subgroup.to_group Subgroup.toGroupₓ'. -/
 /-- A subgroup of a group inherits a group structure. -/
 @[to_additive "An `add_subgroup` of an `add_group` inherits an `add_group` structure."]
 instance toGroup {G : Type _} [Group G] (H : Subgroup G) : Group H :=
@@ -1154,12 +782,6 @@ instance toGroup {G : Type _} [Group G] (H : Subgroup G) : Group H :=
 #align subgroup.to_group Subgroup.toGroup
 #align add_subgroup.to_add_group AddSubgroup.toAddGroup
 
-/- warning: subgroup.to_comm_group -> Subgroup.toCommGroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_4 : CommGroup.{u1} G] (H : Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)), CommGroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) G (Subgroup.setLike.{u1} G (CommGroup.toGroup.{u1} G _inst_4))) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_4 : CommGroup.{u1} G] (H : Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)), CommGroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) G (Subgroup.instSetLikeSubgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4))) x H))
-Case conversion may be inaccurate. Consider using '#align subgroup.to_comm_group Subgroup.toCommGroupₓ'. -/
 /-- A subgroup of a `comm_group` is a `comm_group`. -/
 @[to_additive "An `add_subgroup` of an `add_comm_group` is an `add_comm_group`."]
 instance toCommGroup {G : Type _} [CommGroup G] (H : Subgroup G) : CommGroup H :=
@@ -1168,12 +790,6 @@ instance toCommGroup {G : Type _} [CommGroup G] (H : Subgroup G) : CommGroup H :
 #align subgroup.to_comm_group Subgroup.toCommGroup
 #align add_subgroup.to_add_comm_group AddSubgroup.toAddCommGroup
 
-/- warning: subgroup.to_ordered_comm_group -> Subgroup.toOrderedCommGroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_4 : OrderedCommGroup.{u1} G] (H : Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4))), OrderedCommGroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4))) G (Subgroup.setLike.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4)))) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_4 : OrderedCommGroup.{u1} G] (H : Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4))), OrderedCommGroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4))) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4))) G (Subgroup.instSetLikeSubgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G _inst_4)))) x H))
-Case conversion may be inaccurate. Consider using '#align subgroup.to_ordered_comm_group Subgroup.toOrderedCommGroupₓ'. -/
 /-- A subgroup of an `ordered_comm_group` is an `ordered_comm_group`. -/
 @[to_additive "An `add_subgroup` of an `add_ordered_comm_group` is an `add_ordered_comm_group`."]
 instance toOrderedCommGroup {G : Type _} [OrderedCommGroup G] (H : Subgroup G) :
@@ -1183,12 +799,6 @@ instance toOrderedCommGroup {G : Type _} [OrderedCommGroup G] (H : Subgroup G) :
 #align subgroup.to_ordered_comm_group Subgroup.toOrderedCommGroup
 #align add_subgroup.to_ordered_add_comm_group AddSubgroup.toOrderedAddCommGroup
 
-/- warning: subgroup.to_linear_ordered_comm_group -> Subgroup.toLinearOrderedCommGroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_4 : LinearOrderedCommGroup.{u1} G] (H : Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4)))), LinearOrderedCommGroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4)))) G (Subgroup.setLike.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4))))) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_4 : LinearOrderedCommGroup.{u1} G] (H : Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4)))), LinearOrderedCommGroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4)))) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4)))) G (Subgroup.instSetLikeSubgroup.{u1} G (CommGroup.toGroup.{u1} G (OrderedCommGroup.toCommGroup.{u1} G (LinearOrderedCommGroup.toOrderedCommGroup.{u1} G _inst_4))))) x H))
-Case conversion may be inaccurate. Consider using '#align subgroup.to_linear_ordered_comm_group Subgroup.toLinearOrderedCommGroupₓ'. -/
 /-- A subgroup of a `linear_ordered_comm_group` is a `linear_ordered_comm_group`. -/
 @[to_additive
       "An `add_subgroup` of a `linear_ordered_add_comm_group` is a\n  `linear_ordered_add_comm_group`."]
@@ -1199,12 +809,6 @@ instance toLinearOrderedCommGroup {G : Type _} [LinearOrderedCommGroup G] (H : S
 #align subgroup.to_linear_ordered_comm_group Subgroup.toLinearOrderedCommGroup
 #align add_subgroup.to_linear_ordered_add_comm_group AddSubgroup.toLinearOrderedAddCommGroup
 
-/- warning: subgroup.subtype -> Subgroup.subtype is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))
-Case conversion may be inaccurate. Consider using '#align subgroup.subtype Subgroup.subtypeₓ'. -/
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an `add_subgroup` of `add_group` `G` to `G`."]
 protected def subtype : H →* G :=
@@ -1212,36 +816,18 @@ protected def subtype : H →* G :=
 #align subgroup.subtype Subgroup.subtype
 #align add_subgroup.subtype AddSubgroup.subtype
 
-/- warning: subgroup.coe_subtype -> Subgroup.coeSubtype is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (forall (ᾰ : 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 H)), (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 H)) => 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_subtype Subgroup.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : ⇑H.Subtype = coe :=
   rfl
 #align subgroup.coe_subtype Subgroup.coeSubtype
 #align add_subgroup.coe_subtype AddSubgroup.coeSubtype
 
-/- warning: subgroup.subtype_injective -> Subgroup.subtype_injective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, succ 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)) H) 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.subtype_injective Subgroup.subtype_injectiveₓ'. -/
 @[to_additive]
 theorem subtype_injective : Injective (Subgroup.subtype H) :=
   Subtype.coe_injective
 #align subgroup.subtype_injective Subgroup.subtype_injective
 #align add_subgroup.subtype_injective AddSubgroup.subtype_injective
 
-/- warning: subgroup.inclusion -> Subgroup.inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K) -> (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)))
-Case conversion may be inaccurate. Consider using '#align subgroup.inclusion Subgroup.inclusionₓ'. -/
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
 @[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
 def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
@@ -1249,30 +835,18 @@ def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
 #align subgroup.inclusion Subgroup.inclusion
 #align add_subgroup.inclusion AddSubgroup.inclusion
 
-/- warning: subgroup.coe_inclusion -> Subgroup.coe_inclusion is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_inclusion Subgroup.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by
   cases a; simp only [inclusion, coe_mk, MonoidHom.mk'_apply]
 #align subgroup.coe_inclusion Subgroup.coe_inclusion
 #align add_subgroup.coe_inclusion AddSubgroup.coe_inclusion
 
-/- warning: subgroup.inclusion_injective -> Subgroup.inclusion_injective is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_injective Subgroup.inclusion_injectiveₓ'. -/
 @[to_additive]
 theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h :=
   Set.inclusion_injective h
 #align subgroup.inclusion_injective Subgroup.inclusion_injective
 #align add_subgroup.inclusion_injective AddSubgroup.inclusion_injective
 
-/- warning: subgroup.subtype_comp_inclusion -> Subgroup.subtype_comp_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (hH : 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)))) H K), Eq.{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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, 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)) H) (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)) K) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K hH)) (Subgroup.subtype.{u1} G _inst_1 H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (hH : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Eq.{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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, 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 H)) (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 K)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K hH)) (Subgroup.subtype.{u1} G _inst_1 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.subtype_comp_inclusion Subgroup.subtype_comp_inclusionₓ'. -/
 @[simp, to_additive]
 theorem subtype_comp_inclusion {H K : Subgroup G} (hH : H ≤ K) :
     K.Subtype.comp (inclusion hH) = H.Subtype :=
@@ -1285,12 +859,6 @@ theorem subtype_comp_inclusion {H K : Subgroup G} (hH : H ≤ K) :
 instance : Top (Subgroup G) :=
   ⟨{ (⊤ : Submonoid G) with inv_mem' := fun _ _ => Set.mem_univ _ }⟩
 
-/- warning: subgroup.top_equiv -> Subgroup.topEquiv is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], MulEquiv.{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)) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) G (Subgroup.mul.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], MulEquiv.{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 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1)))) G (Subgroup.mul.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))
-Case conversion may be inaccurate. Consider using '#align subgroup.top_equiv Subgroup.topEquivₓ'. -/
 /-- The top subgroup is isomorphic to the group.
 
 This is the group version of `submonoid.top_equiv`. -/
@@ -1311,48 +879,24 @@ instance : Bot (Subgroup G) :=
 instance : Inhabited (Subgroup G) :=
   ⟨⊥⟩
 
-/- warning: subgroup.mem_bot -> Subgroup.mem_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {x : G}, Iff (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 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_bot Subgroup.mem_botₓ'. -/
 @[simp, to_additive]
 theorem mem_bot {x : G} : x ∈ (⊥ : Subgroup G) ↔ x = 1 :=
   Iff.rfl
 #align subgroup.mem_bot Subgroup.mem_bot
 #align add_subgroup.mem_bot AddSubgroup.mem_bot
 
-/- warning: subgroup.mem_top -> Subgroup.mem_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (x : G), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (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] (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 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_top Subgroup.mem_topₓ'. -/
 @[simp, to_additive]
 theorem mem_top (x : G) : x ∈ (⊤ : Subgroup G) :=
   Set.mem_univ x
 #align subgroup.mem_top Subgroup.mem_top
 #align add_subgroup.mem_top AddSubgroup.mem_top
 
-/- warning: subgroup.coe_top -> Subgroup.coe_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (Set.univ.{u1} G)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))) (Set.univ.{u1} G)
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_top Subgroup.coe_topₓ'. -/
 @[simp, to_additive]
 theorem coe_top : ((⊤ : Subgroup G) : Set G) = Set.univ :=
   rfl
 #align subgroup.coe_top Subgroup.coe_top
 #align add_subgroup.coe_top AddSubgroup.coe_top
 
-/- warning: subgroup.coe_bot -> Subgroup.coe_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.hasSingleton.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{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) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.instSingletonSet.{u1} G) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_bot Subgroup.coe_botₓ'. -/
 @[simp, to_additive]
 theorem coe_bot : ((⊥ : Subgroup G) : Set G) = {1} :=
   rfl
@@ -1363,48 +907,24 @@ theorem coe_bot : ((⊥ : Subgroup G) : Set G) = {1} :=
 instance : Unique (⊥ : Subgroup G) :=
   ⟨⟨1⟩, fun g => Subtype.ext g.2⟩
 
-/- warning: subgroup.top_to_submonoid -> Subgroup.top_toSubmonoid is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (Top.top.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.hasTop.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))) (Top.top.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instTopSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align subgroup.top_to_submonoid Subgroup.top_toSubmonoidₓ'. -/
 @[simp, to_additive]
 theorem top_toSubmonoid : (⊤ : Subgroup G).toSubmonoid = ⊤ :=
   rfl
 #align subgroup.top_to_submonoid Subgroup.top_toSubmonoid
 #align add_subgroup.top_to_add_submonoid AddSubgroup.top_toAddSubmonoid
 
-/- warning: subgroup.bot_to_submonoid -> Subgroup.bot_toSubmonoid is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Bot.bot.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.hasBot.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (Bot.bot.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instBotSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align subgroup.bot_to_submonoid Subgroup.bot_toSubmonoidₓ'. -/
 @[simp, to_additive]
 theorem bot_toSubmonoid : (⊥ : Subgroup G).toSubmonoid = ⊥ :=
   rfl
 #align subgroup.bot_to_submonoid Subgroup.bot_toSubmonoid
 #align add_subgroup.bot_to_add_submonoid AddSubgroup.bot_toAddSubmonoid
 
-/- warning: subgroup.eq_bot_iff_forall -> Subgroup.eq_bot_iff_forall is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (forall (x : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (forall (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 H) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.eq_bot_iff_forall Subgroup.eq_bot_iff_forallₓ'. -/
 @[to_additive]
 theorem eq_bot_iff_forall : H = ⊥ ↔ ∀ x ∈ H, x = (1 : G) :=
   toSubmonoid_injective.eq_iff.symm.trans <| Submonoid.eq_bot_iff_forall _
 #align subgroup.eq_bot_iff_forall Subgroup.eq_bot_iff_forall
 #align add_subgroup.eq_bot_iff_forall AddSubgroup.eq_bot_iff_forall
 
-/- warning: subgroup.eq_bot_of_subsingleton -> Subgroup.eq_bot_of_subsingleton is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [_inst_4 : Subsingleton.{succ 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)) H)], Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [_inst_4 : Subsingleton.{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 H))], Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.eq_bot_of_subsingleton Subgroup.eq_bot_of_subsingletonₓ'. -/
 @[to_additive]
 theorem eq_bot_of_subsingleton [Subsingleton H] : H = ⊥ :=
   by
@@ -1414,24 +934,12 @@ theorem eq_bot_of_subsingleton [Subsingleton H] : H = ⊥ :=
 #align subgroup.eq_bot_of_subsingleton Subgroup.eq_bot_of_subsingleton
 #align add_subgroup.eq_bot_of_subsingleton AddSubgroup.eq_bot_of_subsingleton
 
-/- warning: subgroup.coe_eq_univ -> Subgroup.coe_eq_univ is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (Set.univ.{u1} G)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (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] {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H) (Set.univ.{u1} G)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_eq_univ Subgroup.coe_eq_univₓ'. -/
 @[to_additive]
 theorem coe_eq_univ {H : Subgroup G} : (H : Set G) = Set.univ ↔ H = ⊤ :=
   (SetLike.ext'_iff.trans (by rfl)).symm
 #align subgroup.coe_eq_univ Subgroup.coe_eq_univ
 #align add_subgroup.coe_eq_univ AddSubgroup.coe_eq_univ
 
-/- warning: subgroup.coe_eq_singleton -> Subgroup.coe_eq_singleton is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Exists.{succ u1} G (fun (g : G) => Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.hasSingleton.{u1} G) g))) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Exists.{succ u1} G (fun (g : G) => Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H) (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.instSingletonSet.{u1} G) g))) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_eq_singleton Subgroup.coe_eq_singletonₓ'. -/
 @[to_additive]
 theorem coe_eq_singleton {H : Subgroup G} : (∃ g : G, (H : Set G) = {g}) ↔ H = ⊥ :=
   ⟨fun ⟨g, hg⟩ =>
@@ -1441,24 +949,12 @@ theorem coe_eq_singleton {H : Subgroup G} : (∃ g : G, (H : Set G) = {g}) ↔ H
 #align subgroup.coe_eq_singleton Subgroup.coe_eq_singleton
 #align add_subgroup.coe_eq_singleton AddSubgroup.coe_eq_singleton
 
-/- warning: subgroup.nontrivial_iff_exists_ne_one -> Subgroup.nontrivial_iff_exists_ne_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Iff (Nontrivial.{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)) H)) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (fun (H : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) => Ne.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Iff (Nontrivial.{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 H))) (Exists.{succ u1} G (fun (x : G) => And (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 H) (Ne.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.nontrivial_iff_exists_ne_one Subgroup.nontrivial_iff_exists_ne_oneₓ'. -/
 @[to_additive]
 theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x ∈ H, x ≠ (1 : G) :=
   Subtype.nontrivial_iff_exists_ne (fun x => x ∈ H) (1 : H)
 #align subgroup.nontrivial_iff_exists_ne_one Subgroup.nontrivial_iff_exists_ne_one
 #align add_subgroup.nontrivial_iff_exists_ne_zero AddSubgroup.nontrivial_iff_exists_ne_zero
 
-/- warning: subgroup.bot_or_nontrivial -> Subgroup.bot_or_nontrivial is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Or (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Nontrivial.{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)) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Or (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (Nontrivial.{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 H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivialₓ'. -/
 /-- A subgroup is either the trivial subgroup or nontrivial. -/
 @[to_additive "A subgroup is either the trivial subgroup or nontrivial."]
 theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
@@ -1472,12 +968,6 @@ theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
 
-/- warning: subgroup.bot_or_exists_ne_one -> Subgroup.bot_or_exists_ne_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Or (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (fun (H : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) => Ne.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Or (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (Exists.{succ u1} G (fun (x : G) => And (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 H) (Ne.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.bot_or_exists_ne_one Subgroup.bot_or_exists_ne_oneₓ'. -/
 /-- A subgroup is either the trivial subgroup or contains a non-identity element. -/
 @[to_additive "A subgroup is either the trivial subgroup or contains a nonzero element."]
 theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (1 : G) :=
@@ -1494,24 +984,12 @@ instance : Inf (Subgroup G) :=
     { H₁.toSubmonoid ⊓ H₂.toSubmonoid with
       inv_mem' := fun _ ⟨hx, hx'⟩ => ⟨H₁.inv_mem hx, H₂.inv_mem hx'⟩ }⟩
 
-/- warning: subgroup.coe_inf -> Subgroup.coe_inf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (p : Subgroup.{u1} G _inst_1) (p' : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) p p')) (Inter.inter.{u1} (Set.{u1} G) (Set.hasInter.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) p) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) p'))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (p : Subgroup.{u1} G _inst_1) (p' : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) p p')) (Inter.inter.{u1} (Set.{u1} G) (Set.instInterSet.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) p) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) p'))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_inf Subgroup.coe_infₓ'. -/
 @[simp, to_additive]
 theorem coe_inf (p p' : Subgroup G) : ((p ⊓ p' : Subgroup G) : Set G) = p ∩ p' :=
   rfl
 #align subgroup.coe_inf Subgroup.coe_inf
 #align add_subgroup.coe_inf AddSubgroup.coe_inf
 
-/- warning: subgroup.mem_inf -> Subgroup.mem_inf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {p' : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) p p')) (And (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p'))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {p' : Subgroup.{u1} G _inst_1} {x : G}, Iff (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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) p p')) (And (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 p) (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 p'))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_inf Subgroup.mem_infₓ'. -/
 @[simp, to_additive]
 theorem mem_inf {p p' : Subgroup G} {x : G} : x ∈ p ⊓ p' ↔ x ∈ p ∧ x ∈ p' :=
   Iff.rfl
@@ -1525,48 +1003,24 @@ instance : InfSet (Subgroup G) :=
       inv_mem' := fun x hx =>
         Set.mem_biInter fun i h => i.inv_mem (by apply Set.mem_iInter₂.1 hx i h) }⟩
 
-/- warning: subgroup.coe_Inf -> Subgroup.coe_sInf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Set.{u1} (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H)) (Set.iInter.{u1, succ u1} G (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Set.iInter.{u1, 0} G (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s H) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s H) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) s)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Set.{u1} (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) H)) (Set.iInter.{u1, succ u1} G (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Set.iInter.{u1, 0} G (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s H) (fun (H : Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s H) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) s)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_Inf Subgroup.coe_sInfₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_sInf (H : Set (Subgroup G)) : ((sInf H : Subgroup G) : Set G) = ⋂ s ∈ H, ↑s :=
   rfl
 #align subgroup.coe_Inf Subgroup.coe_sInf
 #align add_subgroup.coe_Inf AddSubgroup.coe_sInf
 
-/- warning: subgroup.mem_Inf -> Subgroup.mem_sInf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) S)) (forall (p : Subgroup.{u1} G _inst_1), (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) p S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {x : G}, Iff (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 (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) S)) (forall (p : Subgroup.{u1} G _inst_1), (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) p S) -> (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 p))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_Inf Subgroup.mem_sInfₓ'. -/
 @[simp, to_additive]
 theorem mem_sInf {S : Set (Subgroup G)} {x : G} : x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p :=
   Set.mem_iInter₂
 #align subgroup.mem_Inf Subgroup.mem_sInf
 #align add_subgroup.mem_Inf AddSubgroup.mem_sInf
 
-/- warning: subgroup.mem_infi -> Subgroup.mem_iInf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => S i))) (forall (i : ι), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (S i))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} {x : G}, Iff (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 (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) ι (fun (i : ι) => S i))) (forall (i : ι), 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 (S i))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_infi Subgroup.mem_iInfₓ'. -/
 @[to_additive]
 theorem mem_iInf {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
   simp only [iInf, mem_Inf, Set.forall_range_iff]
 #align subgroup.mem_infi Subgroup.mem_iInf
 #align add_subgroup.mem_infi AddSubgroup.mem_iInf
 
-/- warning: subgroup.coe_infi -> Subgroup.coe_iInf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => S i))) (Set.iInter.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) ι (fun (i : ι) => S i))) (Set.iInter.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_infi Subgroup.coe_iInfₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_iInf {ι : Sort _} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
   simp only [iInf, coe_Inf, Set.biInter_range]
@@ -1589,48 +1043,24 @@ instance : CompleteLattice (Subgroup G) :=
     inf_le_left := fun a b x => And.left
     inf_le_right := fun a b x => And.right }
 
-/- warning: subgroup.mem_sup_left -> Subgroup.mem_sup_left is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {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 S) -> (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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup_left Subgroup.mem_sup_leftₓ'. -/
 @[to_additive]
 theorem mem_sup_left {S T : Subgroup G} : ∀ {x : G}, x ∈ S → x ∈ S ⊔ T :=
   show S ≤ S ⊔ T from le_sup_left
 #align subgroup.mem_sup_left Subgroup.mem_sup_left
 #align add_subgroup.mem_sup_left AddSubgroup.mem_sup_left
 
-/- warning: subgroup.mem_sup_right -> Subgroup.mem_sup_right is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x T) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {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 T) -> (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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup_right Subgroup.mem_sup_rightₓ'. -/
 @[to_additive]
 theorem mem_sup_right {S T : Subgroup G} : ∀ {x : G}, x ∈ T → x ∈ S ⊔ T :=
   show T ≤ S ⊔ T from le_sup_right
 #align subgroup.mem_sup_right Subgroup.mem_sup_right
 #align add_subgroup.mem_sup_right AddSubgroup.mem_sup_right
 
-/- warning: subgroup.mul_mem_sup -> Subgroup.mul_mem_sup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y T) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G} {y : 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 S) -> (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)) y T) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
-Case conversion may be inaccurate. Consider using '#align subgroup.mul_mem_sup Subgroup.mul_mem_supₓ'. -/
 @[to_additive]
 theorem mul_mem_sup {S T : Subgroup G} {x y : G} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
   (S ⊔ T).mul_mem (mem_sup_left hx) (mem_sup_right hy)
 #align subgroup.mul_mem_sup Subgroup.mul_mem_sup
 #align add_subgroup.add_mem_sup AddSubgroup.add_mem_sup
 
-/- warning: subgroup.mem_supr_of_mem -> Subgroup.mem_iSup_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} (i : ι) {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (S i)) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι S))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} (i : ι) {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 (S i)) -> (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 (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι S))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_mem Subgroup.mem_iSup_of_memₓ'. -/
 @[to_additive]
 theorem mem_iSup_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
     ∀ {x : G}, x ∈ S i → x ∈ iSup S :=
@@ -1638,12 +1068,6 @@ theorem mem_iSup_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
 #align subgroup.mem_supr_of_mem Subgroup.mem_iSup_of_mem
 #align add_subgroup.mem_supr_of_mem AddSubgroup.mem_iSup_of_mem
 
-/- warning: subgroup.mem_Sup_of_mem -> Subgroup.mem_sSup_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {s : Subgroup.{u1} G _inst_1}, (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s S) -> (forall {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) S)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {s : Subgroup.{u1} G _inst_1}, (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s S) -> (forall {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 s) -> (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 (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) S)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_mem Subgroup.mem_sSup_of_memₓ'. -/
 @[to_additive]
 theorem mem_sSup_of_mem {S : Set (Subgroup G)} {s : Subgroup G} (hs : s ∈ S) :
     ∀ {x : G}, x ∈ s → x ∈ sSup S :=
@@ -1682,12 +1106,6 @@ instance [Subsingleton G] : Unique (Subgroup G) :=
 instance [Nontrivial G] : Nontrivial (Subgroup G) :=
   nontrivial_iff.mpr ‹_›
 
-/- warning: subgroup.eq_top_iff' -> Subgroup.eq_top_iff' is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (forall (x : G), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))) (forall (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 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.eq_top_iff' Subgroup.eq_top_iff'ₓ'. -/
 @[to_additive]
 theorem eq_top_iff' : H = ⊤ ↔ ∀ x : G, x ∈ H :=
   eq_top_iff.trans ⟨fun h m => h <| mem_top m, fun h m _ => h m⟩
@@ -1705,36 +1123,18 @@ def closure (k : Set G) : Subgroup G :=
 
 variable {k : Set G}
 
-/- warning: subgroup.mem_closure -> Subgroup.mem_closure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k)) (forall (K : Subgroup.{u1} G _inst_1), (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {x : G}, Iff (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 (Subgroup.closure.{u1} G _inst_1 k)) (forall (K : Subgroup.{u1} G _inst_1), (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) k (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) -> (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 K))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_closure Subgroup.mem_closureₓ'. -/
 @[to_additive]
 theorem mem_closure {x : G} : x ∈ closure k ↔ ∀ K : Subgroup G, k ⊆ K → x ∈ K :=
   mem_sInf
 #align subgroup.mem_closure Subgroup.mem_closure
 #align add_subgroup.mem_closure AddSubgroup.mem_closure
 
-/- warning: subgroup.subset_closure -> Subgroup.subset_closure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G}, HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 k))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G}, HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) k (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k))
-Case conversion may be inaccurate. Consider using '#align subgroup.subset_closure Subgroup.subset_closureₓ'. -/
 /-- The subgroup generated by a set includes the set. -/
 @[simp, to_additive "The `add_subgroup` generated by a set includes the set."]
 theorem subset_closure : k ⊆ closure k := fun x hx => mem_closure.2 fun K hK => hK hx
 #align subgroup.subset_closure Subgroup.subset_closure
 #align add_subgroup.subset_closure AddSubgroup.subset_closure
 
-/- warning: subgroup.not_mem_of_not_mem_closure -> Subgroup.not_mem_of_not_mem_closure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {P : G}, (Not (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) P (Subgroup.closure.{u1} G _inst_1 k))) -> (Not (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) P k))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {P : G}, (Not (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)) P (Subgroup.closure.{u1} G _inst_1 k))) -> (Not (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) P k))
-Case conversion may be inaccurate. Consider using '#align subgroup.not_mem_of_not_mem_closure Subgroup.not_mem_of_not_mem_closureₓ'. -/
 @[to_additive]
 theorem not_mem_of_not_mem_closure {P : G} (hP : P ∉ closure k) : P ∉ k := fun h =>
   hP (subset_closure h)
@@ -1743,12 +1143,6 @@ theorem not_mem_of_not_mem_closure {P : G} (hP : P ∉ closure k) : P ∉ k := f
 
 open Set
 
-/- warning: subgroup.closure_le -> Subgroup.closure_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, Iff (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)))) (Subgroup.closure.{u1} G _inst_1 k) K) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, Iff (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))))) (Subgroup.closure.{u1} G _inst_1 k) K) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) k (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_le Subgroup.closure_leₓ'. -/
 /-- A subgroup `K` includes `closure k` if and only if it includes `k`. -/
 @[simp, to_additive "An additive subgroup `K` includes `closure k` if and only if it includes `k`"]
 theorem closure_le : closure k ≤ K ↔ k ⊆ K :=
@@ -1756,24 +1150,12 @@ theorem closure_le : closure k ≤ K ↔ k ⊆ K :=
 #align subgroup.closure_le Subgroup.closure_le
 #align add_subgroup.closure_le AddSubgroup.closure_le
 
-/- warning: subgroup.closure_eq_of_le -> Subgroup.closure_eq_of_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)) -> (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)))) K (Subgroup.closure.{u1} G _inst_1 k)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) k (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) -> (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))))) K (Subgroup.closure.{u1} G _inst_1 k)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_eq_of_le Subgroup.closure_eq_of_leₓ'. -/
 @[to_additive]
 theorem closure_eq_of_le (h₁ : k ⊆ K) (h₂ : K ≤ closure k) : closure k = K :=
   le_antisymm ((closure_le <| K).2 h₁) h₂
 #align subgroup.closure_eq_of_le Subgroup.closure_eq_of_le
 #align add_subgroup.closure_eq_of_le AddSubgroup.closure_eq_of_le
 
-/- warning: subgroup.closure_induction -> Subgroup.closure_induction is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {p : G -> Prop} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k)) -> (forall (x : G), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x k) -> (p x)) -> (p (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) -> (forall (x : G) (y : G), (p x) -> (p y) -> (p (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y))) -> (forall (x : G), (p x) -> (p (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x))) -> (p x)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {p : G -> Prop} {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 (Subgroup.closure.{u1} G _inst_1 k)) -> (forall (x : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x k) -> (p x)) -> (p (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) -> (forall (x : G) (y : G), (p x) -> (p y) -> (p (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y))) -> (forall (x : G), (p x) -> (p (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x))) -> (p x)
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_induction Subgroup.closure_inductionₓ'. -/
 /-- An induction principle for closure membership. If `p` holds for `1` and all elements of `k`, and
 is preserved under multiplication and inverse, then `p` holds for all elements of the closure
 of `k`. -/
@@ -1786,12 +1168,6 @@ theorem closure_induction {p : G → Prop} {x} (h : x ∈ closure k) (Hk : ∀ x
 #align subgroup.closure_induction Subgroup.closure_induction
 #align add_subgroup.closure_induction AddSubgroup.closure_induction
 
-/- warning: subgroup.closure_induction' -> Subgroup.closure_induction' is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {p : forall (x : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k)) -> Prop}, (forall (x : G) (h : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x k), p x (Subgroup.subset_closure.{u1} G _inst_1 k x h)) -> (p (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (OneMemClass.one_mem.{u1, u1} (Subgroup.{u1} G _inst_1) G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.setLike.{u1} G _inst_1) (SubmonoidClass.to_oneMemClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.setLike.{u1} G _inst_1) (SubgroupClass.to_submonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.setLike.{u1} G _inst_1) (Subgroup.subgroupClass.{u1} G _inst_1))) (Subgroup.closure.{u1} G _inst_1 k))) -> (forall (x : G) (hx : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k)) (y : G) (hy : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y (Subgroup.closure.{u1} G _inst_1 k)), (p x hx) -> (p y hy) -> (p (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (MulMemClass.mul_mem.{u1, u1} (Subgroup.{u1} G _inst_1) G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.setLike.{u1} G _inst_1) (SubmonoidClass.to_mulMemClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.setLike.{u1} G _inst_1) (SubgroupClass.to_submonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.setLike.{u1} G _inst_1) (Subgroup.subgroupClass.{u1} G _inst_1))) (Subgroup.closure.{u1} G _inst_1 k) x y hx hy))) -> (forall (x : G) (hx : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k)), (p x hx) -> (p (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) (InvMemClass.inv_mem.{u1, u1} (Subgroup.{u1} G _inst_1) G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) (Subgroup.setLike.{u1} G _inst_1) (SubgroupClass.to_invMemClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.setLike.{u1} G _inst_1) (Subgroup.subgroupClass.{u1} G _inst_1)) (Subgroup.closure.{u1} G _inst_1 k) x hx))) -> (forall {x : G} (hx : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k)), p x hx)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {p : forall (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 (Subgroup.closure.{u1} G _inst_1 k)) -> Prop}, (forall (x : G) (h : Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x k), p x (Subgroup.subset_closure.{u1} G _inst_1 k x h)) -> (p (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))) (OneMemClass.one_mem.{u1, u1} (Subgroup.{u1} G _inst_1) G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (SubmonoidClass.toOneMemClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G _inst_1))) (Subgroup.closure.{u1} G _inst_1 k))) -> (forall (x : G) (hx : 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 (Subgroup.closure.{u1} G _inst_1 k)) (y : G) (hy : 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)) y (Subgroup.closure.{u1} G _inst_1 k)), (p x hx) -> (p y hy) -> (p (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (MulMemClass.mul_mem.{u1, u1} (Subgroup.{u1} G _inst_1) G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (SubmonoidClass.toMulMemClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G _inst_1))) (Subgroup.closure.{u1} G _inst_1 k) x y hx hy))) -> (forall (x : G) (hx : 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 (Subgroup.closure.{u1} G _inst_1 k)), (p x hx) -> (p (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) (InvMemClass.inv_mem.{u1, u1} (Subgroup.{u1} G _inst_1) G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (SubgroupClass.toInvMemClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G _inst_1)) (Subgroup.closure.{u1} G _inst_1 k) x hx))) -> (forall {x : G} (hx : 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 (Subgroup.closure.{u1} G _inst_1 k)), p x hx)
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_induction' Subgroup.closure_induction'ₓ'. -/
 /-- A dependent version of `subgroup.closure_induction`.  -/
 @[elab_as_elim, to_additive "A dependent version of `add_subgroup.closure_induction`. "]
 theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
@@ -1806,12 +1182,6 @@ theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
 #align subgroup.closure_induction' Subgroup.closure_induction'
 #align add_subgroup.closure_induction' AddSubgroup.closure_induction'
 
-/- warning: subgroup.closure_induction₂ -> Subgroup.closure_induction₂ is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {p : G -> G -> Prop} {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k)) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y (Subgroup.closure.{u1} G _inst_1 k)) -> (forall (x : G), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x k) -> (forall (y : G), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) y k) -> (p x y))) -> (forall (x : G), p (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) x) -> (forall (x : G), p x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) -> (forall (x₁ : G) (x₂ : G) (y : G), (p x₁ y) -> (p x₂ y) -> (p (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x₁ x₂) y)) -> (forall (x : G) (y₁ : G) (y₂ : G), (p x y₁) -> (p x y₂) -> (p x (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) y₁ y₂))) -> (forall (x : G) (y : G), (p x y) -> (p (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) y)) -> (forall (x : G) (y : G), (p x y) -> (p x (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) y))) -> (p x y)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G} {p : G -> G -> Prop} {x : G} {y : 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 (Subgroup.closure.{u1} G _inst_1 k)) -> (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)) y (Subgroup.closure.{u1} G _inst_1 k)) -> (forall (x : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x k) -> (forall (y : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) y k) -> (p x y))) -> (forall (x : G), p (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))) x) -> (forall (x : G), p x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) -> (forall (x₁ : G) (x₂ : G) (y : G), (p x₁ y) -> (p x₂ y) -> (p (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x₁ x₂) y)) -> (forall (x : G) (y₁ : G) (y₂ : G), (p x y₁) -> (p x y₂) -> (p x (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) y₁ y₂))) -> (forall (x : G) (y : G), (p x y) -> (p (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) y)) -> (forall (x : G) (y : G), (p x y) -> (p x (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) y))) -> (p x y)
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_induction₂ Subgroup.closure_induction₂ₓ'. -/
 /-- An induction principle for closure membership for predicates with two arguments. -/
 @[elab_as_elim,
   to_additive
@@ -1827,12 +1197,6 @@ theorem closure_induction₂ {p : G → G → Prop} {x} {y : G} (hx : x ∈ clos
 #align subgroup.closure_induction₂ Subgroup.closure_induction₂
 #align add_subgroup.closure_induction₂ AddSubgroup.closure_induction₂
 
-/- warning: subgroup.closure_closure_coe_preimage -> Subgroup.closure_closure_coe_preimage is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G}, Eq.{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)) (Subgroup.closure.{u1} G _inst_1 k)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k))) (Subgroup.closure.{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)) (Subgroup.closure.{u1} G _inst_1 k)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k)) (Set.preimage.{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)) (Subgroup.closure.{u1} G _inst_1 k)) G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) (Subgroup.closure.{u1} G _inst_1 k)) G (HasLiftT.mk.{succ u1, succ 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)) (Subgroup.closure.{u1} G _inst_1 k)) G (CoeTCₓ.coe.{succ u1, succ 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)) (Subgroup.closure.{u1} G _inst_1 k)) G (coeBase.{succ u1, succ 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)) (Subgroup.closure.{u1} G _inst_1 k)) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.closure.{u1} G _inst_1 k))))))) k)) (Top.top.{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)) (Subgroup.closure.{u1} G _inst_1 k)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k))) (Subgroup.hasTop.{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)) (Subgroup.closure.{u1} G _inst_1 k)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G}, Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k)))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k))) (Subgroup.closure.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k)))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k)) (Set.preimage.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k)))) G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k)))) k)) (Top.top.{u1} (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k)))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k))) (Subgroup.instTopSubgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k)))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 k))))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_closure_coe_preimage Subgroup.closure_closure_coe_preimageₓ'. -/
 @[simp, to_additive]
 theorem closure_closure_coe_preimage {k : Set G} : closure ((coe : closure k → G) ⁻¹' k) = ⊤ :=
   eq_top_iff.2 fun x =>
@@ -1846,12 +1210,6 @@ theorem closure_closure_coe_preimage {k : Set G} : closure ((coe : closure k →
 #align subgroup.closure_closure_coe_preimage Subgroup.closure_closure_coe_preimage
 #align add_subgroup.closure_closure_coe_preimage AddSubgroup.closure_closure_coe_preimage
 
-/- warning: subgroup.closure_comm_group_of_comm -> Subgroup.closureCommGroupOfComm is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G}, (forall (x : G), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x k) -> (forall (y : G), (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) y k) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) y x)))) -> (CommGroup.{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)) (Subgroup.closure.{u1} G _inst_1 k)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {k : Set.{u1} G}, (forall (x : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x k) -> (forall (y : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) y k) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) y x)))) -> (CommGroup.{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 (Subgroup.closure.{u1} G _inst_1 k))))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_comm_group_of_comm Subgroup.closureCommGroupOfCommₓ'. -/
 /-- If all the elements of a set `s` commute, then `closure s` is a commutative group. -/
 @[to_additive
       "If all the elements of a set `s` commute, then `closure s` is an additive\ncommutative group."]
@@ -1875,12 +1233,6 @@ def closureCommGroupOfComm {k : Set G} (hcomm : ∀ x ∈ k, ∀ y ∈ k, x * y
 
 variable (G)
 
-/- warning: subgroup.gi -> Subgroup.gi is a dubious translation:
-lean 3 declaration is
-  forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], GaloisInsertion.{u1, u1} (Set.{u1} G) (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Set.{u1} G) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} G) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} G) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} G) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} G) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} G) (Set.completeBooleanAlgebra.{u1} G))))))) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1))) (Subgroup.closure.{u1} G _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))))
-but is expected to have type
-  forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], GaloisInsertion.{u1, u1} (Set.{u1} G) (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Set.{u1} G) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} G) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} G) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} G) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} G) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} G) (Set.instCompleteBooleanAlgebraSet.{u1} G))))))) (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)))) (Subgroup.closure.{u1} G _inst_1) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.gi Subgroup.giₓ'. -/
 /-- `closure` forms a Galois insertion with the coercion to set. -/
 @[to_additive "`closure` forms a Galois insertion with the coercion to set."]
 protected def gi : GaloisInsertion (@closure G _) coe
@@ -1894,12 +1246,6 @@ protected def gi : GaloisInsertion (@closure G _) coe
 
 variable {G}
 
-/- warning: subgroup.closure_mono -> Subgroup.closure_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {{h : Set.{u1} G}} {{k : Set.{u1} G}}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) h k) -> (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)))) (Subgroup.closure.{u1} G _inst_1 h) (Subgroup.closure.{u1} G _inst_1 k))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {{h : Set.{u1} G}} {{k : Set.{u1} G}}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) h k) -> (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))))) (Subgroup.closure.{u1} G _inst_1 h) (Subgroup.closure.{u1} G _inst_1 k))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_mono Subgroup.closure_monoₓ'. -/
 /-- Subgroup closure of a set is monotone in its argument: if `h ⊆ k`,
 then `closure h ≤ closure k`. -/
 @[to_additive
@@ -1909,12 +1255,6 @@ theorem closure_mono ⦃h k : Set G⦄ (h' : h ⊆ k) : closure h ≤ closure k
 #align subgroup.closure_mono Subgroup.closure_mono
 #align add_subgroup.closure_mono AddSubgroup.closure_mono
 
-/- warning: subgroup.closure_eq -> Subgroup.closure_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)) K
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) K
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_eq Subgroup.closure_eqₓ'. -/
 /-- Closure of a subgroup `K` equals `K`. -/
 @[simp, to_additive "Additive closure of an additive subgroup `K` equals `K`"]
 theorem closure_eq : closure (K : Set G) = K :=
@@ -1922,84 +1262,42 @@ theorem closure_eq : closure (K : Set G) = K :=
 #align subgroup.closure_eq Subgroup.closure_eq
 #align add_subgroup.closure_eq AddSubgroup.closure_eq
 
-/- warning: subgroup.closure_empty -> Subgroup.closure_empty 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) (Subgroup.closure.{u1} G _inst_1 (EmptyCollection.emptyCollection.{u1} (Set.{u1} G) (Set.hasEmptyc.{u1} G))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{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) (Subgroup.closure.{u1} G _inst_1 (EmptyCollection.emptyCollection.{u1} (Set.{u1} G) (Set.instEmptyCollectionSet.{u1} G))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_empty Subgroup.closure_emptyₓ'. -/
 @[simp, to_additive]
 theorem closure_empty : closure (∅ : Set G) = ⊥ :=
   (Subgroup.gi G).gc.l_bot
 #align subgroup.closure_empty Subgroup.closure_empty
 #align add_subgroup.closure_empty AddSubgroup.closure_empty
 
-/- warning: subgroup.closure_univ -> Subgroup.closure_univ 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) (Subgroup.closure.{u1} G _inst_1 (Set.univ.{u1} G)) (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) (Subgroup.closure.{u1} G _inst_1 (Set.univ.{u1} G)) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_univ Subgroup.closure_univₓ'. -/
 @[simp, to_additive]
 theorem closure_univ : closure (univ : Set G) = ⊤ :=
   @coe_top G _ ▸ closure_eq ⊤
 #align subgroup.closure_univ Subgroup.closure_univ
 #align add_subgroup.closure_univ AddSubgroup.closure_univ
 
-/- warning: subgroup.closure_union -> Subgroup.closure_union is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G) (t : Set.{u1} G), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Union.union.{u1} (Set.{u1} G) (Set.hasUnion.{u1} G) s t)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.closure.{u1} G _inst_1 t))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G) (t : Set.{u1} G), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Union.union.{u1} (Set.{u1} G) (Set.instUnionSet.{u1} G) s t)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.closure.{u1} G _inst_1 t))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_union Subgroup.closure_unionₓ'. -/
 @[to_additive]
 theorem closure_union (s t : Set G) : closure (s ∪ t) = closure s ⊔ closure t :=
   (Subgroup.gi G).gc.l_sup
 #align subgroup.closure_union Subgroup.closure_union
 #align add_subgroup.closure_union AddSubgroup.closure_union
 
-/- warning: subgroup.closure_Union -> Subgroup.closure_iUnion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (s : ι -> (Set.{u1} G)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => s i))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.closure.{u1} G _inst_1 (s i)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (s : ι -> (Set.{u1} G)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => s i))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => Subgroup.closure.{u1} G _inst_1 (s i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_Union Subgroup.closure_iUnionₓ'. -/
 @[to_additive]
 theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, closure (s i) :=
   (Subgroup.gi G).gc.l_iSup
 #align subgroup.closure_Union Subgroup.closure_iUnion
 #align add_subgroup.closure_Union AddSubgroup.closure_iUnion
 
-/- warning: subgroup.closure_eq_bot_iff -> Subgroup.closure_eq_bot_iff is a dubious translation:
-lean 3 declaration is
-  forall (G : Type.{u1}) [_inst_4 : Group.{u1} G] (S : Set.{u1} G), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_4) (Subgroup.closure.{u1} G _inst_4 S) (Bot.bot.{u1} (Subgroup.{u1} G _inst_4) (Subgroup.hasBot.{u1} G _inst_4))) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) S (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.hasSingleton.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))))))))
-but is expected to have type
-  forall (G : Type.{u1}) [_inst_4 : Group.{u1} G] (S : Set.{u1} G), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_4) (Subgroup.closure.{u1} G _inst_4 S) (Bot.bot.{u1} (Subgroup.{u1} G _inst_4) (Subgroup.instBotSubgroup.{u1} G _inst_4))) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) S (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.instSingletonSet.{u1} G) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_4))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} := by
   rw [← le_bot_iff]; exact closure_le _
 #align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iff
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
 
-/- warning: subgroup.supr_eq_closure -> Subgroup.iSup_eq_closure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (p : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => p i)) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (p i))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (p : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => p i)) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (p i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.supr_eq_closure Subgroup.iSup_eq_closureₓ'. -/
 @[to_additive]
 theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
     (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
 #align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
 #align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
 
-/- warning: subgroup.mem_closure_singleton -> Subgroup.mem_closure_singleton is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {x : G} {y : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y (Subgroup.closure.{u1} G _inst_1 (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.hasSingleton.{u1} G) x))) (Exists.{1} Int (fun (n : Int) => Eq.{succ u1} G (HPow.hPow.{u1, 0, u1} G Int G (instHPow.{u1, 0} G Int (DivInvMonoid.Pow.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) x n) y))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {x : G} {y : G}, Iff (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)) y (Subgroup.closure.{u1} G _inst_1 (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.instSingletonSet.{u1} G) x))) (Exists.{1} Int (fun (n : Int) => Eq.{succ u1} G (HPow.hPow.{u1, 0, u1} G Int G (instHPow.{u1, 0} G Int (DivInvMonoid.Pow.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) x n) y))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_closure_singleton Subgroup.mem_closure_singletonₓ'. -/
 /-- The subgroup generated by an element of a group equals the set of integer number powers of
     the element. -/
 @[to_additive
@@ -2020,36 +1318,18 @@ theorem mem_closure_singleton {x y : G} : y ∈ closure ({x} : Set G) ↔ ∃ n
 #align subgroup.mem_closure_singleton Subgroup.mem_closure_singleton
 #align add_subgroup.mem_closure_singleton AddSubgroup.mem_closure_singleton
 
-/- warning: subgroup.closure_singleton_one -> Subgroup.closure_singleton_one 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) (Subgroup.closure.{u1} G _inst_1 (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.hasSingleton.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{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) (Subgroup.closure.{u1} G _inst_1 (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.instSingletonSet.{u1} G) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_singleton_one Subgroup.closure_singleton_oneₓ'. -/
 @[to_additive]
 theorem closure_singleton_one : closure ({1} : Set G) = ⊥ := by
   simp [eq_bot_iff_forall, mem_closure_singleton]
 #align subgroup.closure_singleton_one Subgroup.closure_singleton_one
 #align add_subgroup.closure_singleton_zero AddSubgroup.closure_singleton_zero
 
-/- warning: subgroup.le_closure_to_submonoid -> Subgroup.le_closure_toSubmonoid is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (S : Set.{u1} G), LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toHasLe.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Submonoid.closure.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) S) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 S))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (S : Set.{u1} G), LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toLE.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instCompleteLatticeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Submonoid.closure.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) S) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 S))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_closure_to_submonoid Subgroup.le_closure_toSubmonoidₓ'. -/
 @[to_additive]
 theorem le_closure_toSubmonoid (S : Set G) : Submonoid.closure S ≤ (closure S).toSubmonoid :=
   Submonoid.closure_le.2 subset_closure
 #align subgroup.le_closure_to_submonoid Subgroup.le_closure_toSubmonoid
 #align add_subgroup.le_closure_to_add_submonoid AddSubgroup.le_closure_toAddSubmonoid
 
-/- warning: subgroup.closure_eq_top_of_mclosure_eq_top -> Subgroup.closure_eq_top_of_mclosure_eq_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} G}, (Eq.{succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.closure.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) S) (Top.top.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.hasTop.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 S) (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] {S : Set.{u1} G}, (Eq.{succ u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.closure.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) S) (Top.top.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instTopSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 S) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1)))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_eq_top_of_mclosure_eq_top Subgroup.closure_eq_top_of_mclosure_eq_topₓ'. -/
 @[to_additive]
 theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S = ⊤) :
     closure S = ⊤ :=
@@ -2057,12 +1337,6 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 #align subgroup.closure_eq_top_of_mclosure_eq_top Subgroup.closure_eq_top_of_mclosure_eq_top
 #align add_subgroup.closure_eq_top_of_mclosure_eq_top AddSubgroup.closure_eq_top_of_mclosure_eq_top
 
-/- warning: subgroup.mem_supr_of_directed -> Subgroup.mem_iSup_of_directed is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374) K) -> (forall {x : G}, Iff (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 (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directedₓ'. -/
 @[to_additive]
 theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
     {x : G} : x ∈ (iSup K : Subgroup G) ↔ ∃ i, x ∈ K i :=
@@ -2079,12 +1353,6 @@ theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (h
 #align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directed
 #align add_subgroup.mem_supr_of_directed AddSubgroup.mem_iSup_of_directed
 
-/- warning: subgroup.coe_supr_of_directed -> Subgroup.coe_iSup_of_directed is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.iUnion.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directedₓ'. -/
 @[to_additive]
 theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subgroup G) : Set G) = ⋃ i, ↑(S i) :=
@@ -2092,12 +1360,6 @@ theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Di
 #align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directed
 #align add_subgroup.coe_supr_of_directed AddSubgroup.coe_iSup_of_directed
 
-/- warning: subgroup.mem_Sup_of_directed_on -> Subgroup.mem_sSup_of_directedOn is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725) K) -> (forall {x : G}, Iff (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 (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_sSup_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_sSup_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
     {x : G} : x ∈ sSup K ↔ ∃ s ∈ K, x ∈ s :=
@@ -2121,36 +1383,18 @@ def comap {N : Type _} [Group N] (f : G →* N) (H : Subgroup N) : Subgroup G :=
 #align add_subgroup.comap AddSubgroup.comap
 -/
 
-/- warning: subgroup.coe_comap -> Subgroup.coe_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4) K))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_comap Subgroup.coe_comapₓ'. -/
 @[simp, to_additive]
 theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻¹' K :=
   rfl
 #align subgroup.coe_comap Subgroup.coe_comap
 #align add_subgroup.coe_comap AddSubgroup.coe_comap
 
-/- warning: subgroup.mem_comap -> Subgroup.mem_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (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 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_comap Subgroup.mem_comapₓ'. -/
 @[simp, to_additive]
 theorem mem_comap {K : Subgroup N} {f : G →* N} {x : G} : x ∈ K.comap f ↔ f x ∈ K :=
   Iff.rfl
 #align subgroup.mem_comap Subgroup.mem_comap
 #align add_subgroup.mem_comap AddSubgroup.mem_comap
 
-/- warning: subgroup.comap_mono -> Subgroup.comap_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {K' : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K K') -> (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K'))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {K' : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K K') -> (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K'))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_mono Subgroup.comap_monoₓ'. -/
 @[to_additive]
 theorem comap_mono {f : G →* N} {K K' : Subgroup N} : K ≤ K' → comap f K ≤ comap f K' :=
   preimage_mono
@@ -2185,60 +1429,30 @@ def map (f : G →* N) (H : Subgroup G) : Subgroup N :=
 #align add_subgroup.map AddSubgroup.map
 -/
 
-/- warning: subgroup.coe_map -> Subgroup.coe_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_map Subgroup.coe_mapₓ'. -/
 @[simp, to_additive]
 theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
   rfl
 #align subgroup.coe_map Subgroup.coe_map
 #align add_subgroup.coe_map AddSubgroup.coe_map
 
-/- warning: subgroup.mem_map -> Subgroup.mem_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) (fun (H : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_map Subgroup.mem_mapₓ'. -/
 @[simp, to_additive]
 theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃ x ∈ K, f x = y :=
   mem_image_iff_bex
 #align subgroup.mem_map Subgroup.mem_map
 #align add_subgroup.mem_map AddSubgroup.mem_map
 
-/- warning: subgroup.mem_map_of_mem -> Subgroup.mem_map_of_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {K : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) -> (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {K : Subgroup.{u2} G _inst_1} {x : G}, (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) -> (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_of_mem Subgroup.mem_map_of_memₓ'. -/
 @[to_additive]
 theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) : f x ∈ K.map f :=
   mem_image_of_mem f hx
 #align subgroup.mem_map_of_mem Subgroup.mem_map_of_mem
 #align add_subgroup.mem_map_of_mem AddSubgroup.mem_map_of_mem
 
-/- warning: subgroup.apply_coe_mem_map -> Subgroup.apply_coe_mem_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1) (x : 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)) K), Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) x)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1) (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
-Case conversion may be inaccurate. Consider using '#align subgroup.apply_coe_mem_map Subgroup.apply_coe_mem_mapₓ'. -/
 @[to_additive]
 theorem apply_coe_mem_map (f : G →* N) (K : Subgroup G) (x : K) : f x ∈ K.map f :=
   mem_map_of_mem f x.Prop
 #align subgroup.apply_coe_mem_map Subgroup.apply_coe_mem_map
 #align add_subgroup.apply_coe_mem_map AddSubgroup.apply_coe_mem_map
 
-/- warning: subgroup.map_mono -> Subgroup.map_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {K' : Subgroup.{u1} G _inst_1}, (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)))) K K') -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K'))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {K' : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) K K') -> (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K'))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_mono Subgroup.map_monoₓ'. -/
 @[to_additive]
 theorem map_mono {f : G →* N} {K K' : Subgroup G} : K ≤ K' → map f K ≤ map f K' :=
   image_subset _
@@ -2253,36 +1467,18 @@ theorem map_id : K.map (MonoidHom.id G) = K :=
 #align add_subgroup.map_id AddSubgroup.map_id
 -/
 
-/- warning: subgroup.map_map -> Subgroup.map_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {N : Type.{u2}} [_inst_4 : Group.{u2} N] {P : Type.{u3}} [_inst_5 : Group.{u3} P] (g : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u3} (Subgroup.{u3} P _inst_5) (Subgroup.map.{u2, u3} N _inst_4 P _inst_5 g (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.map.{u1, u3} G _inst_1 P _inst_5 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) g f) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {N : Type.{u3}} [_inst_4 : Group.{u3} N] {P : Type.{u2}} [_inst_5 : Group.{u2} P] (g : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5)))) (f : MonoidHom.{u1, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} P _inst_5) (Subgroup.map.{u3, u2} N _inst_4 P _inst_5 g (Subgroup.map.{u1, u3} G _inst_1 N _inst_4 f K)) (Subgroup.map.{u1, u2} G _inst_1 P _inst_5 (MonoidHom.comp.{u1, u3, u2} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) g f) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_map Subgroup.map_mapₓ'. -/
 @[to_additive]
 theorem map_map (g : N →* P) (f : G →* N) : (K.map f).map g = K.map (g.comp f) :=
   SetLike.coe_injective <| image_image _ _ _
 #align subgroup.map_map Subgroup.map_map
 #align add_subgroup.map_map AddSubgroup.map_map
 
-/- warning: subgroup.map_one_eq_bot -> Subgroup.map_one_eq_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (OfNat.ofNat.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (OfNat.mk.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (One.one.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHom.hasOne.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))))) K) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (OfNat.ofNat.{max u1 u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (One.toOfNat1.{max u1 u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (instOneMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) K) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instBotSubgroup.{u2} N _inst_4))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_one_eq_bot Subgroup.map_one_eq_botₓ'. -/
 @[simp, to_additive]
 theorem map_one_eq_bot : K.map (1 : G →* N) = ⊥ :=
   eq_bot_iff.mpr <| by rintro x ⟨y, _, rfl⟩; simp
 #align subgroup.map_one_eq_bot Subgroup.map_one_eq_bot
 #align add_subgroup.map_zero_eq_bot AddSubgroup.map_zero_eq_bot
 
-/- warning: subgroup.mem_map_equiv -> Subgroup.mem_map_equiv is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))} {K : Subgroup.{u1} G _inst_1} {x : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => N -> G) (MulEquiv.hasCoeToFun.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) x) K)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))} {K : Subgroup.{u2} G _inst_1} {x : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => G) x) (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f) x) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_equiv Subgroup.mem_map_equivₓ'. -/
 @[to_additive]
 theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
     x ∈ K.map f.toMonoidHom ↔ f.symm x ∈ K :=
@@ -2290,12 +1486,6 @@ theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
 #align subgroup.mem_map_equiv Subgroup.mem_map_equiv
 #align add_subgroup.mem_map_equiv AddSubgroup.mem_map_equiv
 
-/- warning: subgroup.mem_map_iff_mem -> Subgroup.mem_map_iff_mem is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {K : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {K : Subgroup.{u2} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_iff_mem Subgroup.mem_map_iff_memₓ'. -/
 @[to_additive]
 theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup G} {x : G} :
     f x ∈ K.map f ↔ x ∈ K :=
@@ -2303,12 +1493,6 @@ theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup
 #align subgroup.mem_map_iff_mem Subgroup.mem_map_iff_mem
 #align add_subgroup.mem_map_iff_mem AddSubgroup.mem_map_iff_mem
 
-/- warning: subgroup.map_equiv_eq_comap_symm -> Subgroup.map_equiv_eq_comap_symm is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) (K : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 (MulEquiv.toMonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MulEquiv.symm.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) K)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 (MulEquiv.toMonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f)) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_equiv_eq_comap_symm Subgroup.map_equiv_eq_comap_symmₓ'. -/
 @[to_additive]
 theorem map_equiv_eq_comap_symm (f : G ≃* N) (K : Subgroup G) :
     K.map f.toMonoidHom = K.comap f.symm.toMonoidHom :=
@@ -2316,12 +1500,6 @@ theorem map_equiv_eq_comap_symm (f : G ≃* N) (K : Subgroup G) :
 #align subgroup.map_equiv_eq_comap_symm Subgroup.map_equiv_eq_comap_symm
 #align add_subgroup.map_equiv_eq_comap_symm AddSubgroup.map_equiv_eq_comap_symm
 
-/- warning: subgroup.comap_equiv_eq_map_symm -> Subgroup.comap_equiv_eq_map_symm is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (K : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 (MulEquiv.toMonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) f) K) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MulEquiv.symm.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MulEquiv.{u2, u1} N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (K : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 (MulEquiv.toMonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) f) K) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MulEquiv.symm.{u2, u1} N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_equiv_eq_map_symm Subgroup.comap_equiv_eq_map_symmₓ'. -/
 @[to_additive]
 theorem comap_equiv_eq_map_symm (f : N ≃* G) (K : Subgroup G) :
     K.comap f.toMonoidHom = K.map f.symm.toMonoidHom :=
@@ -2329,9 +1507,6 @@ theorem comap_equiv_eq_map_symm (f : N ≃* G) (K : Subgroup G) :
 #align subgroup.comap_equiv_eq_map_symm Subgroup.comap_equiv_eq_map_symm
 #align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm
 
-/- warning: subgroup.map_symm_eq_iff_map_eq -> Subgroup.map_symm_eq_iff_map_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.map_symm_eq_iff_map_eq Subgroup.map_symm_eq_iff_map_eqₓ'. -/
 @[to_additive]
 theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} : H.map ↑e.symm = K ↔ K.map ↑e = H :=
   by
@@ -2345,12 +1520,6 @@ theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} : H.map ↑e.symm
 #align subgroup.map_symm_eq_iff_map_eq Subgroup.map_symm_eq_iff_map_eq
 #align add_subgroup.map_symm_eq_iff_map_eq AddSubgroup.map_symm_eq_iff_map_eq
 
-/- warning: subgroup.map_le_iff_le_comap -> Subgroup.map_le_iff_le_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {H : Subgroup.{u2} N _inst_4}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K) H) (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)))) K (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {H : Subgroup.{u1} N _inst_4}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K) H) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) K (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_le_iff_le_comap Subgroup.map_le_iff_le_comapₓ'. -/
 @[to_additive]
 theorem map_le_iff_le_comap {f : G →* N} {K : Subgroup G} {H : Subgroup N} :
     K.map f ≤ H ↔ K ≤ H.comap f :=
@@ -2358,36 +1527,18 @@ theorem map_le_iff_le_comap {f : G →* N} {K : Subgroup G} {H : Subgroup N} :
 #align subgroup.map_le_iff_le_comap Subgroup.map_le_iff_le_comap
 #align add_subgroup.map_le_iff_le_comap AddSubgroup.map_le_iff_le_comap
 
-/- warning: subgroup.gc_map_comap -> Subgroup.gc_map_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), GaloisConnection.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1))) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), GaloisConnection.{u2, u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f)
-Case conversion may be inaccurate. Consider using '#align subgroup.gc_map_comap Subgroup.gc_map_comapₓ'. -/
 @[to_additive]
 theorem gc_map_comap (f : G →* N) : GaloisConnection (map f) (comap f) := fun _ _ =>
   map_le_iff_le_comap
 #align subgroup.gc_map_comap Subgroup.gc_map_comap
 #align add_subgroup.gc_map_comap AddSubgroup.gc_map_comap
 
-/- warning: subgroup.map_sup -> Subgroup.map_sup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H K)) (Sup.sup.{u1} (Subgroup.{u1} N _inst_4) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} N _inst_4) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_sup Subgroup.map_supₓ'. -/
 @[to_additive]
 theorem map_sup (H K : Subgroup G) (f : G →* N) : (H ⊔ K).map f = H.map f ⊔ K.map f :=
   (gc_map_comap f).l_sup
 #align subgroup.map_sup Subgroup.map_sup
 #align add_subgroup.map_sup AddSubgroup.map_sup
 
-/- warning: subgroup.map_supr -> Subgroup.map_iSup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (iSup.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι s)) (iSup.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι (fun (i : ι) => Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (s i)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u2} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (iSup.{u2, u3} (Subgroup.{u2} G _inst_1) (CompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)) ι s)) (iSup.{u1, u3} (Subgroup.{u1} N _inst_4) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)) ι (fun (i : ι) => Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (s i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_supr Subgroup.map_iSupₓ'. -/
 @[to_additive]
 theorem map_iSup {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
     (iSup s).map f = ⨆ i, (s i).map f :=
@@ -2395,12 +1546,6 @@ theorem map_iSup {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
 #align subgroup.map_supr Subgroup.map_iSup
 #align add_subgroup.map_supr AddSubgroup.map_iSup
 
-/- warning: subgroup.comap_sup_comap_le -> Subgroup.comap_sup_comap_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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))))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_comap_le Subgroup.comap_sup_comap_leₓ'. -/
 @[to_additive]
 theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
     comap f H ⊔ comap f K ≤ comap f (H ⊔ K) :=
@@ -2408,12 +1553,6 @@ theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
 #align subgroup.comap_sup_comap_le Subgroup.comap_sup_comap_le
 #align add_subgroup.comap_sup_comap_le AddSubgroup.comap_sup_comap_le
 
-/- warning: subgroup.supr_comap_le -> Subgroup.iSup_comap_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), 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)))) (iSup.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (iSup.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι s))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u1} N _inst_4)), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (iSup.{u2, u3} (Subgroup.{u2} G _inst_1) (CompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)) ι (fun (i : ι) => Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (iSup.{u1, u3} (Subgroup.{u1} N _inst_4) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)) ι s))
-Case conversion may be inaccurate. Consider using '#align subgroup.supr_comap_le Subgroup.iSup_comap_leₓ'. -/
 @[to_additive]
 theorem iSup_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
     (⨆ i, (s i).comap f) ≤ (iSup s).comap f :=
@@ -2421,24 +1560,12 @@ theorem iSup_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
 #align subgroup.supr_comap_le Subgroup.iSup_comap_le
 #align add_subgroup.supr_comap_le AddSubgroup.iSup_comap_le
 
-/- warning: subgroup.comap_inf -> Subgroup.comap_inf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instInfSubgroup.{u2} N _inst_4) H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_inf Subgroup.comap_infₓ'. -/
 @[to_additive]
 theorem comap_inf (H K : Subgroup N) (f : G →* N) : (H ⊓ K).comap f = H.comap f ⊓ K.comap f :=
   (gc_map_comap f).u_inf
 #align subgroup.comap_inf Subgroup.comap_inf
 #align add_subgroup.comap_inf AddSubgroup.comap_inf
 
-/- warning: subgroup.comap_infi -> Subgroup.comap_iInf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (iInf.{u2, u3} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) ι s)) (iInf.{u1, u3} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u1} N _inst_4)), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (iInf.{u1, u3} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSetSubgroup.{u1} N _inst_4) ι s)) (iInf.{u2, u3} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSetSubgroup.{u2} G _inst_1) ι (fun (i : ι) => Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (s i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_infi Subgroup.comap_iInfₓ'. -/
 @[to_additive]
 theorem comap_iInf {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
     (iInf s).comap f = ⨅ i, (s i).comap f :=
@@ -2446,24 +1573,12 @@ theorem comap_iInf {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
 #align subgroup.comap_infi Subgroup.comap_iInf
 #align add_subgroup.comap_infi AddSubgroup.comap_iInf
 
-/- warning: subgroup.map_inf_le -> Subgroup.map_inf_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_le Subgroup.map_inf_leₓ'. -/
 @[to_additive]
 theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f H ⊓ map f K :=
   le_inf (map_mono inf_le_left) (map_mono inf_le_right)
 #align subgroup.map_inf_le Subgroup.map_inf_le
 #align add_subgroup.map_inf_le AddSubgroup.map_inf_le
 
-/- warning: subgroup.map_inf_eq -> Subgroup.map_inf_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_eq Subgroup.map_inf_eqₓ'. -/
 @[to_additive]
 theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f) :
     map f (H ⊓ K) = map f H ⊓ map f K :=
@@ -2473,48 +1588,24 @@ theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f)
 #align subgroup.map_inf_eq Subgroup.map_inf_eq
 #align add_subgroup.map_inf_eq AddSubgroup.map_inf_eq
 
-/- warning: subgroup.map_bot -> Subgroup.map_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_bot Subgroup.map_botₓ'. -/
 @[simp, to_additive]
 theorem map_bot (f : G →* N) : (⊥ : Subgroup G).map f = ⊥ :=
   (gc_map_comap f).l_bot
 #align subgroup.map_bot Subgroup.map_bot
 #align add_subgroup.map_bot AddSubgroup.map_bot
 
-/- warning: subgroup.map_top_of_surjective -> Subgroup.map_top_of_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (Top.top.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasTop.{u2} N _inst_4)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_top_of_surjective Subgroup.map_top_of_surjectiveₓ'. -/
 @[simp, to_additive]
 theorem map_top_of_surjective (f : G →* N) (h : Function.Surjective f) : Subgroup.map f ⊤ = ⊤ := by
   rw [eq_top_iff]; intro x hx; obtain ⟨y, hy⟩ := h x; exact ⟨y, trivial, hy⟩
 #align subgroup.map_top_of_surjective Subgroup.map_top_of_surjective
 #align add_subgroup.map_top_of_surjective AddSubgroup.map_top_of_surjective
 
-/- warning: subgroup.comap_top -> Subgroup.comap_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasTop.{u2} N _inst_4))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4))) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_top Subgroup.comap_topₓ'. -/
 @[simp, to_additive]
 theorem comap_top (f : G →* N) : (⊤ : Subgroup N).comap f = ⊤ :=
   (gc_map_comap f).u_top
 #align subgroup.comap_top Subgroup.comap_top
 #align add_subgroup.comap_top AddSubgroup.comap_top
 
-/- warning: subgroup.subgroup_of -> Subgroup.subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], (Subgroup.{u1} G _inst_1) -> (forall (K : Subgroup.{u1} G _inst_1), 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], (Subgroup.{u1} G _inst_1) -> (forall (K : Subgroup.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of Subgroup.subgroupOfₓ'. -/
 /-- For any subgroups `H` and `K`, view `H ⊓ K` as a subgroup of `K`. -/
 @[to_additive "For any subgroups `H` and `K`, view `H ⊓ K` as a subgroup of `K`."]
 def subgroupOf (H K : Subgroup G) : Subgroup K :=
@@ -2522,12 +1613,6 @@ def subgroupOf (H K : Subgroup G) : Subgroup K :=
 #align subgroup.subgroup_of Subgroup.subgroupOf
 #align add_subgroup.add_subgroup_of AddSubgroup.addSubgroupOf
 
-/- warning: subgroup.subgroup_of_equiv_of_le -> Subgroup.subgroupOfEquivOfLe is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_6 : Group.{u1} G] {H : Subgroup.{u1} G _inst_6} {K : Subgroup.{u1} G _inst_6}, (LE.le.{u1} (Subgroup.{u1} G _inst_6) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_6) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_6) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)))) H K) -> (MulEquiv.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K)) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.setLike.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K))) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) H) (Subgroup.mul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (Subgroup.mul.{u1} G _inst_6 H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_6 : Group.{u1} G] {H : Subgroup.{u1} G _inst_6} {K : Subgroup.{u1} G _inst_6}, (LE.le.{u1} (Subgroup.{u1} G _inst_6) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_6) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_6) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G _inst_6) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G _inst_6) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_6))))) H K) -> (MulEquiv.{u1, u1} (Subtype.{succ u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (fun (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) => Membership.mem.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.instSetLikeSubgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K))) x (Subgroup.subgroupOf.{u1} G _inst_6 H K))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x H)) (Subgroup.mul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (Subgroup.mul.{u1} G _inst_6 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_equiv_of_le Subgroup.subgroupOfEquivOfLeₓ'. -/
 /-- If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`. -/
 @[to_additive "If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`.", simps]
 def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K) : H.subgroupOf K ≃* H
@@ -2540,24 +1625,12 @@ def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K)
 #align subgroup.subgroup_of_equiv_of_le Subgroup.subgroupOfEquivOfLe
 #align add_subgroup.add_subgroup_of_equiv_of_le AddSubgroup.addSubgroupOfEquivOfLe
 
-/- warning: subgroup.comap_subtype -> Subgroup.comap_subtype is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.comap.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) H) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.comap.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) H) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_subtype Subgroup.comap_subtypeₓ'. -/
 @[simp, to_additive]
 theorem comap_subtype (H K : Subgroup G) : H.comap K.Subtype = H.subgroupOf K :=
   rfl
 #align subgroup.comap_subtype Subgroup.comap_subtype
 #align add_subgroup.comap_subtype AddSubgroup.comap_subtype
 
-/- warning: subgroup.comap_inclusion_subgroup_of -> Subgroup.comap_inclusion_subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K₁ : Subgroup.{u1} G _inst_1} {K₂ : Subgroup.{u1} G _inst_1} (h : 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)))) K₁ K₂) (H : Subgroup.{u1} G _inst_1), Eq.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁)) (Subgroup.comap.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁) (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)) K₂) (Subgroup.toGroup.{u1} G _inst_1 K₂) (Subgroup.inclusion.{u1} G _inst_1 K₁ K₂ h) (Subgroup.subgroupOf.{u1} G _inst_1 H K₂)) (Subgroup.subgroupOf.{u1} G _inst_1 H K₁)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K₁ : Subgroup.{u1} G _inst_1} {K₂ : Subgroup.{u1} G _inst_1} (h : 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))))) K₁ K₂) (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 K₁)) (Subgroup.toGroup.{u1} G _inst_1 K₁)) (Subgroup.comap.{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 K₁)) (Subgroup.toGroup.{u1} G _inst_1 K₁) (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 K₂)) (Subgroup.toGroup.{u1} G _inst_1 K₂) (Subgroup.inclusion.{u1} G _inst_1 K₁ K₂ h) (Subgroup.subgroupOf.{u1} G _inst_1 H K₂)) (Subgroup.subgroupOf.{u1} G _inst_1 H K₁)
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_inclusion_subgroup_of Subgroup.comap_inclusion_subgroupOfₓ'. -/
 @[simp, to_additive]
 theorem comap_inclusion_subgroupOf {K₁ K₂ : Subgroup G} (h : K₁ ≤ K₂) (H : Subgroup G) :
     (H.subgroupOf K₂).comap (inclusion h) = H.subgroupOf K₁ :=
@@ -2565,105 +1638,54 @@ theorem comap_inclusion_subgroupOf {K₁ K₂ : Subgroup G} (h : K₁ ≤ K₂)
 #align subgroup.comap_inclusion_subgroup_of Subgroup.comap_inclusion_subgroupOf
 #align add_subgroup.comap_inclusion_add_subgroup_of AddSubgroup.comap_inclusion_addSubgroupOf
 
-/- warning: subgroup.coe_subgroup_of -> Subgroup.coe_subgroupOf is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_subgroup_of Subgroup.coe_subgroupOfₓ'. -/
 @[to_additive]
 theorem coe_subgroupOf (H K : Subgroup G) : (H.subgroupOf K : Set K) = K.Subtype ⁻¹' H :=
   rfl
 #align subgroup.coe_subgroup_of Subgroup.coe_subgroupOf
 #align add_subgroup.coe_add_subgroup_of AddSubgroup.coe_addSubgroupOf
 
-/- warning: subgroup.mem_subgroup_of -> Subgroup.mem_subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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)) K}, Iff (Membership.Mem.{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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (SetLike.hasMem.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))) h (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) h) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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 K)}, Iff (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K))) h (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (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)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) h) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_subgroup_of Subgroup.mem_subgroupOfₓ'. -/
 @[to_additive]
 theorem mem_subgroupOf {H K : Subgroup G} {h : K} : h ∈ H.subgroupOf K ↔ (h : G) ∈ H :=
   Iff.rfl
 #align subgroup.mem_subgroup_of Subgroup.mem_subgroupOf
 #align add_subgroup.mem_add_subgroup_of AddSubgroup.mem_addSubgroupOf
 
-/- warning: subgroup.subgroup_of_map_subtype -> Subgroup.subgroupOf_map_subtype is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_map_subtype Subgroup.subgroupOf_map_subtypeₓ'. -/
 @[simp, to_additive]
 theorem subgroupOf_map_subtype (H K : Subgroup G) : (H.subgroupOf K).map K.Subtype = H ⊓ K :=
   SetLike.ext' <| Subtype.image_preimage_coe _ _
 #align subgroup.subgroup_of_map_subtype Subgroup.subgroupOf_map_subtype
 #align add_subgroup.add_subgroup_of_map_subtype AddSubgroup.addSubgroupOf_map_subtype
 
-/- warning: subgroup.bot_subgroup_of -> Subgroup.bot_subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)) H) (Bot.bot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasBot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)) H) (Bot.bot.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instBotSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.bot_subgroup_of Subgroup.bot_subgroupOfₓ'. -/
 @[simp, to_additive]
 theorem bot_subgroupOf : (⊥ : Subgroup G).subgroupOf H = ⊥ :=
   Eq.symm (Subgroup.ext fun g => Subtype.ext_iff)
 #align subgroup.bot_subgroup_of Subgroup.bot_subgroupOf
 #align add_subgroup.bot_add_subgroup_of AddSubgroup.bot_addSubgroupOf
 
-/- warning: subgroup.top_subgroup_of -> Subgroup.top_subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)) H) (Top.top.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasTop.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1)) H) (Top.top.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instTopSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.top_subgroup_of Subgroup.top_subgroupOfₓ'. -/
 @[simp, to_additive]
 theorem top_subgroupOf : (⊤ : Subgroup G).subgroupOf H = ⊤ :=
   rfl
 #align subgroup.top_subgroup_of Subgroup.top_subgroupOf
 #align add_subgroup.top_add_subgroup_of AddSubgroup.top_addSubgroupOf
 
-/- warning: subgroup.subgroup_of_bot_eq_bot -> Subgroup.subgroupOf_bot_eq_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{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)) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Bot.bot.{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)) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)))) (Subgroup.hasBot.{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)) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (Bot.bot.{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 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.instBotSubgroup.{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 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_bot_eq_bot Subgroup.subgroupOf_bot_eq_botₓ'. -/
 @[to_additive]
 theorem subgroupOf_bot_eq_bot : H.subgroupOf ⊥ = ⊥ :=
   Subsingleton.elim _ _
 #align subgroup.subgroup_of_bot_eq_bot Subgroup.subgroupOf_bot_eq_bot
 #align add_subgroup.add_subgroup_of_bot_eq_bot AddSubgroup.addSubgroupOf_bot_eq_bot
 
-/- warning: subgroup.subgroup_of_bot_eq_top -> Subgroup.subgroupOf_bot_eq_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{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)) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Top.top.{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)) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)))) (Subgroup.hasTop.{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)) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))) (Top.top.{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 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.instTopSubgroup.{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 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))) (Subgroup.toGroup.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_bot_eq_top Subgroup.subgroupOf_bot_eq_topₓ'. -/
 @[to_additive]
 theorem subgroupOf_bot_eq_top : H.subgroupOf ⊥ = ⊤ :=
   Subsingleton.elim _ _
 #align subgroup.subgroup_of_bot_eq_top Subgroup.subgroupOf_bot_eq_top
 #align add_subgroup.add_subgroup_of_bot_eq_top AddSubgroup.addSubgroupOf_bot_eq_top
 
-/- warning: subgroup.subgroup_of_self -> Subgroup.subgroupOf_self is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 H H) (Top.top.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasTop.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 H H) (Top.top.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instTopSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_self Subgroup.subgroupOf_selfₓ'. -/
 @[simp, to_additive]
 theorem subgroupOf_self : H.subgroupOf H = ⊤ :=
   top_unique fun g hg => g.2
 #align subgroup.subgroup_of_self Subgroup.subgroupOf_self
 #align add_subgroup.add_subgroup_of_self AddSubgroup.addSubgroupOf_self
 
-/- warning: subgroup.subgroup_of_inj -> Subgroup.subgroupOf_inj is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K) (Subgroup.subgroupOf.{u1} G _inst_1 H₂ K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H₁ K) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H₂ K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K) (Subgroup.subgroupOf.{u1} G _inst_1 H₂ K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H₁ K) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H₂ K))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_inj Subgroup.subgroupOf_injₓ'. -/
 @[simp, to_additive]
 theorem subgroupOf_inj {H₁ H₂ K : Subgroup G} :
     H₁.subgroupOf K = H₂.subgroupOf K ↔ H₁ ⊓ K = H₂ ⊓ K := by
@@ -2671,60 +1693,30 @@ theorem subgroupOf_inj {H₁ H₂ K : Subgroup G} :
 #align subgroup.subgroup_of_inj Subgroup.subgroupOf_inj
 #align add_subgroup.add_subgroup_of_inj AddSubgroup.addSubgroupOf_inj
 
-/- warning: subgroup.inf_subgroup_of_right -> Subgroup.inf_subgroupOf_right is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H K) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_right Subgroup.inf_subgroupOf_rightₓ'. -/
 @[simp, to_additive]
 theorem inf_subgroupOf_right (H K : Subgroup G) : (H ⊓ K).subgroupOf K = H.subgroupOf K :=
   subgroupOf_inj.2 inf_right_idem
 #align subgroup.inf_subgroup_of_right Subgroup.inf_subgroupOf_right
 #align add_subgroup.inf_add_subgroup_of_right AddSubgroup.inf_addSubgroupOf_right
 
-/- warning: subgroup.inf_subgroup_of_left -> Subgroup.inf_subgroupOf_left is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) K H) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) K H) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_left Subgroup.inf_subgroupOf_leftₓ'. -/
 @[simp, to_additive]
 theorem inf_subgroupOf_left (H K : Subgroup G) : (K ⊓ H).subgroupOf K = H.subgroupOf K := by
   rw [inf_comm, inf_subgroup_of_right]
 #align subgroup.inf_subgroup_of_left Subgroup.inf_subgroupOf_left
 #align add_subgroup.inf_add_subgroup_of_left AddSubgroup.inf_addSubgroupOf_left
 
-/- warning: subgroup.subgroup_of_eq_bot -> Subgroup.subgroupOf_eq_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Bot.bot.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.hasBot.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Bot.bot.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.instBotSubgroup.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_eq_bot Subgroup.subgroupOf_eq_botₓ'. -/
 @[simp, to_additive]
 theorem subgroupOf_eq_bot {H K : Subgroup G} : H.subgroupOf K = ⊥ ↔ Disjoint H K := by
   rw [disjoint_iff, ← bot_subgroup_of, subgroup_of_inj, bot_inf_eq]
 #align subgroup.subgroup_of_eq_bot Subgroup.subgroupOf_eq_bot
 #align add_subgroup.add_subgroup_of_eq_bot AddSubgroup.addSubgroupOf_eq_bot
 
-/- warning: subgroup.subgroup_of_eq_top -> Subgroup.subgroupOf_eq_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Top.top.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.hasTop.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)))) K H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Top.top.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.instTopSubgroup.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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))))) K H)
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_eq_top Subgroup.subgroupOf_eq_topₓ'. -/
 @[simp, to_additive]
 theorem subgroupOf_eq_top {H K : Subgroup G} : H.subgroupOf K = ⊤ ↔ K ≤ H := by
   rw [← top_subgroup_of, subgroup_of_inj, top_inf_eq, inf_eq_right]
 #align subgroup.subgroup_of_eq_top Subgroup.subgroupOf_eq_top
 #align add_subgroup.add_subgroup_of_eq_top AddSubgroup.addSubgroupOf_eq_top
 
-/- warning: subgroup.prod -> Subgroup.prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], (Subgroup.{u1} G _inst_1) -> (Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], (Subgroup.{u1} G _inst_1) -> (Subgroup.{u2} N _inst_4) -> (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4))
-Case conversion may be inaccurate. Consider using '#align subgroup.prod Subgroup.prodₓ'. -/
 /-- Given `subgroup`s `H`, `K` of groups `G`, `N` respectively, `H × K` as a subgroup of `G × N`. -/
 @[to_additive Prod
       "Given `add_subgroup`s `H`, `K` of `add_group`s `A`, `B` respectively, `H × K`\nas an `add_subgroup` of `A × B`."]
@@ -2734,12 +1726,6 @@ def prod (H : Subgroup G) (K : Subgroup N) : Subgroup (G × N) :=
 #align subgroup.prod Subgroup.prod
 #align add_subgroup.prod AddSubgroup.prod
 
-/- warning: subgroup.coe_prod -> Subgroup.coe_prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u2} N _inst_4), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (Prod.{u1, u2} G N)) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G N)) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G N)) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Set.{max u1 u2} (Prod.{u1, u2} G N)) (SetLike.Set.hasCoeT.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (Set.prod.{u1, u2} G N ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u1} N _inst_4), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (Prod.{u2, u1} G N)) (SetLike.coe.{max u2 u1, max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Prod.{u2, u1} G N) (Subgroup.instSetLikeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 H K)) (Set.prod.{u2, u1} G N (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) K))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_prod Subgroup.coe_prodₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[to_additive coe_prod]
 theorem coe_prod (H : Subgroup G) (K : Subgroup N) : (H.Prod K : Set (G × N)) = H ×ˢ K :=
@@ -2747,108 +1733,54 @@ theorem coe_prod (H : Subgroup G) (K : Subgroup N) : (H.Prod K : Set (G × N)) =
 #align subgroup.coe_prod Subgroup.coe_prod
 #align add_subgroup.coe_prod AddSubgroup.coe_prod
 
-/- warning: subgroup.mem_prod -> Subgroup.mem_prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4} {p : Prod.{u1, u2} G N}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} G N) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.hasMem.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) p (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (And (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (Prod.fst.{u1, u2} G N p) H) (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Prod.snd.{u1, u2} G N p) K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u1} N _inst_4} {p : Prod.{u2, u1} G N}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Prod.{u2, u1} G N) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (SetLike.instMembership.{max u2 u1, max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Prod.{u2, u1} G N) (Subgroup.instSetLikeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) p (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 H K)) (And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (Prod.fst.{u2, u1} G N p) H) (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (Prod.snd.{u2, u1} G N p) K))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_prod Subgroup.mem_prodₓ'. -/
 @[to_additive mem_prod]
 theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K ↔ p.1 ∈ H ∧ p.2 ∈ K :=
   Iff.rfl
 #align subgroup.mem_prod Subgroup.mem_prod
 #align add_subgroup.mem_prod AddSubgroup.mem_prod
 
-/- warning: subgroup.prod_mono -> Subgroup.prod_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14222 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14222 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14240 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14240 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14255 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14255 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
   fun s s' hs t t' ht => Set.prod_mono hs ht
 #align subgroup.prod_mono Subgroup.prod_mono
 #align add_subgroup.prod_mono AddSubgroup.prod_mono
 
-/- warning: subgroup.prod_mono_right -> Subgroup.prod_mono_right is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u1} G _inst_1), Monotone.{u2, max u1 u2} (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)))) (fun (t : Subgroup.{u2} N _inst_4) => Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K t)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (K : Subgroup.{u2} G _inst_1), Monotone.{u1, max u2 u1} (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)))) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))))) (fun (t : Subgroup.{u1} N _inst_4) => Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 K t)
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono_right Subgroup.prod_mono_rightₓ'. -/
 @[to_additive prod_mono_right]
 theorem prod_mono_right (K : Subgroup G) : Monotone fun t : Subgroup N => K.Prod t :=
   prod_mono (le_refl K)
 #align subgroup.prod_mono_right Subgroup.prod_mono_right
 #align add_subgroup.prod_mono_right AddSubgroup.prod_mono_right
 
-/- warning: subgroup.prod_mono_left -> Subgroup.prod_mono_left is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4), Monotone.{u1, max u1 u2} (Subgroup.{u1} G _inst_1) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1))) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)))) (fun (K : Subgroup.{u1} G _inst_1) => Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4), Monotone.{u1, max u1 u2} (Subgroup.{u1} G _inst_1) (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (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)))) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u1 u2} (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u1 u2} (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4))))) (fun (K : Subgroup.{u1} G _inst_1) => Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K H)
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono_left Subgroup.prod_mono_leftₓ'. -/
 @[to_additive prod_mono_left]
 theorem prod_mono_left (H : Subgroup N) : Monotone fun K : Subgroup G => K.Prod H := fun s₁ s₂ hs =>
   prod_mono hs (le_refl H)
 #align subgroup.prod_mono_left Subgroup.prod_mono_left
 #align add_subgroup.prod_mono_left AddSubgroup.prod_mono_left
 
-/- warning: subgroup.prod_top -> Subgroup.prod_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u1} G _inst_1), Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K (Top.top.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasTop.{u2} N _inst_4))) (Subgroup.comap.{max u1 u2, u1} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) G _inst_1 (MonoidHom.fst.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) K)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (K : Subgroup.{u2} G _inst_1), Eq.{max (succ u2) (succ u1)} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 K (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4))) (Subgroup.comap.{max u2 u1, u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) G _inst_1 (MonoidHom.fst.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) K)
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_top Subgroup.prod_topₓ'. -/
 @[to_additive prod_top]
 theorem prod_top (K : Subgroup G) : K.Prod (⊤ : Subgroup N) = K.comap (MonoidHom.fst G N) :=
   ext fun x => by simp [mem_prod, MonoidHom.coe_fst]
 #align subgroup.prod_top Subgroup.prod_top
 #align add_subgroup.prod_top AddSubgroup.prod_top
 
-/- warning: subgroup.top_prod -> Subgroup.top_prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4), Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)) H) (Subgroup.comap.{max u1 u2, u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) N _inst_4 (MonoidHom.snd.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4), Eq.{max (succ u1) (succ u2)} (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1)) H) (Subgroup.comap.{max u1 u2, u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) N _inst_4 (MonoidHom.snd.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.top_prod Subgroup.top_prodₓ'. -/
 @[to_additive top_prod]
 theorem top_prod (H : Subgroup N) : (⊤ : Subgroup G).Prod H = H.comap (MonoidHom.snd G N) :=
   ext fun x => by simp [mem_prod, MonoidHom.coe_snd]
 #align subgroup.top_prod Subgroup.top_prod
 #align add_subgroup.top_prod AddSubgroup.top_prod
 
-/- warning: subgroup.top_prod_top -> Subgroup.top_prod_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)) (Top.top.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasTop.{u2} N _inst_4))) (Top.top.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.hasTop.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Eq.{max (succ u2) (succ u1)} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4))) (Top.top.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instTopSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))
-Case conversion may be inaccurate. Consider using '#align subgroup.top_prod_top Subgroup.top_prod_topₓ'. -/
 @[simp, to_additive top_prod_top]
 theorem top_prod_top : (⊤ : Subgroup G).Prod (⊤ : Subgroup N) = ⊤ :=
   (top_prod _).trans <| comap_top _
 #align subgroup.top_prod_top Subgroup.top_prod_top
 #align add_subgroup.top_prod_top AddSubgroup.top_prod_top
 
-/- warning: subgroup.bot_prod_bot -> Subgroup.bot_prod_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1)) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (Bot.bot.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.hasBot.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Eq.{max (succ u2) (succ u1)} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1)) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Bot.bot.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instBotSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))
-Case conversion may be inaccurate. Consider using '#align subgroup.bot_prod_bot Subgroup.bot_prod_botₓ'. -/
 @[to_additive]
 theorem bot_prod_bot : (⊥ : Subgroup G).Prod (⊥ : Subgroup N) = ⊥ :=
   SetLike.coe_injective <| by simp [coe_prod, Prod.one_eq_mk]
 #align subgroup.bot_prod_bot Subgroup.bot_prod_bot
 #align add_subgroup.bot_sum_bot AddSubgroup.bot_sum_bot
 
-/- warning: subgroup.le_prod_iff -> Subgroup.le_prod_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) J (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (And (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)))) (Subgroup.map.{max u1 u2, u1} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) G _inst_1 (MonoidHom.fst.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) J) H) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{max u1 u2, u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) N _inst_4 (MonoidHom.snd.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) J) K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u1} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)}, Iff (LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) J (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 H K)) (And (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.map.{max u2 u1, u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) G _inst_1 (MonoidHom.fst.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) J) H) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{max u2 u1, u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) N _inst_4 (MonoidHom.snd.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) J) K))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_prod_iff Subgroup.le_prod_iffₓ'. -/
 @[to_additive le_prod_iff]
 theorem le_prod_iff {H : Subgroup G} {K : Subgroup N} {J : Subgroup (G × N)} :
     J ≤ H.Prod K ↔ map (MonoidHom.fst G N) J ≤ H ∧ map (MonoidHom.snd G N) J ≤ K := by
@@ -2856,12 +1788,6 @@ theorem le_prod_iff {H : Subgroup G} {K : Subgroup N} {J : Subgroup (G × N)} :
 #align subgroup.le_prod_iff Subgroup.le_prod_iff
 #align add_subgroup.le_prod_iff AddSubgroup.le_prod_iff
 
-/- warning: subgroup.prod_le_iff -> Subgroup.prod_le_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K) J) (And (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.map.{u1, max u1 u2} G _inst_1 (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (MonoidHom.inl.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) H) J) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.map.{u2, max u1 u2} N _inst_4 (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (MonoidHom.inr.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) K) J))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u1} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)}, Iff (LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 H K) J) (And (LE.le.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) (Subgroup.map.{u2, max u2 u1} G _inst_1 (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) (MonoidHom.inl.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) H) J) (LE.le.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) (Subgroup.map.{u1, max u2 u1} N _inst_4 (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) (MonoidHom.inr.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) K) J))
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_le_iff Subgroup.prod_le_iffₓ'. -/
 @[to_additive prod_le_iff]
 theorem prod_le_iff {H : Subgroup G} {K : Subgroup N} {J : Subgroup (G × N)} :
     H.Prod K ≤ J ↔ map (MonoidHom.inl G N) H ≤ J ∧ map (MonoidHom.inr G N) K ≤ J := by
@@ -2869,24 +1795,12 @@ theorem prod_le_iff {H : Subgroup G} {K : Subgroup N} {J : Subgroup (G × N)} :
 #align subgroup.prod_le_iff Subgroup.prod_le_iff
 #align add_subgroup.prod_le_iff AddSubgroup.prod_le_iff
 
-/- warning: subgroup.prod_eq_bot_iff -> Subgroup.prod_eq_bot_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4}, Iff (Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K) (Bot.bot.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.hasBot.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)))) (And (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Eq.{succ u2} (Subgroup.{u2} N _inst_4) K (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u1} N _inst_4}, Iff (Eq.{max (succ u2) (succ u1)} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 H K) (Bot.bot.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instBotSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))) (And (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Eq.{succ u1} (Subgroup.{u1} N _inst_4) K (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))))
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_eq_bot_iff Subgroup.prod_eq_bot_iffₓ'. -/
 @[simp, to_additive prod_eq_bot_iff]
 theorem prod_eq_bot_iff {H : Subgroup G} {K : Subgroup N} : H.Prod K = ⊥ ↔ H = ⊥ ∧ K = ⊥ := by
   simpa only [← Subgroup.toSubmonoid_eq] using Submonoid.prod_eq_bot_iff
 #align subgroup.prod_eq_bot_iff Subgroup.prod_eq_bot_iff
 #align add_subgroup.prod_eq_bot_iff AddSubgroup.prod_eq_bot_iff
 
-/- warning: subgroup.prod_equiv -> Subgroup.prodEquiv is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u2} N _inst_4), MulEquiv.{max u1 u2, max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (Prod.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) K)) (Subgroup.mul.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (Prod.hasMul.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) K) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u2} N _inst_4), MulEquiv.{max u1 u2, max u2 u1} (Subtype.{succ (max u1 u2)} (Prod.{u1, u2} G N) (fun (x : Prod.{u1, u2} G N) => Membership.mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} G N) (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (SetLike.instMembership.{max u1 u2, max u1 u2} (Subgroup.{max u2 u1} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.instSetLikeSubgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4))) x (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K))) (Prod.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x K))) (Subgroup.mul.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (Prod.instMulProd.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x K)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 K))
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_equiv Subgroup.prodEquivₓ'. -/
 /-- Product of subgroups is isomorphic to their product as groups. -/
 @[to_additive prod_equiv
       "Product of additive subgroups is isomorphic to their product\nas additive groups"]
@@ -2930,12 +1844,6 @@ def pi (I : Set η) (H : ∀ i, Subgroup (f i)) : Subgroup (∀ i, f i) :=
 #align add_subgroup.pi AddSubgroup.pi
 -/
 
-/- warning: subgroup.coe_pi -> Subgroup.coe_pi is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] (I : Set.{u1} η) (H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)), Eq.{succ (max u1 u2)} (Set.{max u1 u2} (forall (i : η), f i)) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Set.{max u1 u2} (forall (i : η), f i)) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Set.{max u1 u2} (forall (i : η), f i)) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Set.{max u1 u2} (forall (i : η), f i)) (SetLike.Set.hasCoeT.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.setLike.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))))) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (Set.pi.{u1, u2} η (fun (i : η) => f i) I (fun (i : η) => (fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} (f i) (_inst_6 i)) (Set.{u2} (f i)) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Set.{u2} (f i)) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Set.{u2} (f i)) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} (f i) (_inst_6 i)) (f i) (Subgroup.setLike.{u2} (f i) (_inst_6 i))))) (H i)))
-but is expected to have type
-  forall {η : Type.{u2}} {f : η -> Type.{u1}} [_inst_6 : forall (i : η), Group.{u1} (f i)] (I : Set.{u2} η) (H : forall (i : η), Subgroup.{u1} (f i) (_inst_6 i)), Eq.{max (succ u2) (succ u1)} (Set.{max u2 u1} (forall (i : η), f i)) (SetLike.coe.{max u2 u1, max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.instSetLikeSubgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (Set.pi.{u2, u1} η (fun (i : η) => f i) I (fun (i : η) => SetLike.coe.{u1, u1} (Subgroup.{u1} (f i) (_inst_6 i)) (f i) (Subgroup.instSetLikeSubgroup.{u1} (f i) (_inst_6 i)) (H i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_pi Subgroup.coe_piₓ'. -/
 @[to_additive]
 theorem coe_pi (I : Set η) (H : ∀ i, Subgroup (f i)) :
     (pi I H : Set (∀ i, f i)) = Set.pi I fun i => (H i : Set (f i)) :=
@@ -2943,12 +1851,6 @@ theorem coe_pi (I : Set η) (H : ∀ i, Subgroup (f i)) :
 #align subgroup.coe_pi Subgroup.coe_pi
 #align add_subgroup.coe_pi AddSubgroup.coe_pi
 
-/- warning: subgroup.mem_pi -> Subgroup.mem_pi is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] (I : Set.{u1} η) {H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)} {p : forall (i : η), f i}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (forall (i : η), f i) (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.setLike.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))) p (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (forall (i : η), (Membership.Mem.{u1, u1} η (Set.{u1} η) (Set.hasMem.{u1} η) i I) -> (Membership.Mem.{u2, u2} (f i) (Subgroup.{u2} (f i) (_inst_6 i)) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} (f i) (_inst_6 i)) (f i) (Subgroup.setLike.{u2} (f i) (_inst_6 i))) (p i) (H i)))
-but is expected to have type
-  forall {η : Type.{u2}} {f : η -> Type.{u1}} [_inst_6 : forall (i : η), Group.{u1} (f i)] (I : Set.{u2} η) {H : forall (i : η), Subgroup.{u1} (f i) (_inst_6 i)} {p : forall (i : η), f i}, Iff (Membership.mem.{max u2 u1, max u1 u2} (forall (i : η), f i) (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.instSetLikeSubgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))) p (Subgroup.pi.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (forall (i : η), (Membership.mem.{u2, u2} η (Set.{u2} η) (Set.instMembershipSet.{u2} η) i I) -> (Membership.mem.{u1, u1} (f i) (Subgroup.{u1} (f i) (_inst_6 i)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (f i) (_inst_6 i)) (f i) (Subgroup.instSetLikeSubgroup.{u1} (f i) (_inst_6 i))) (p i) (H i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_pi Subgroup.mem_piₓ'. -/
 @[to_additive]
 theorem mem_pi (I : Set η) {H : ∀ i, Subgroup (f i)} {p : ∀ i, f i} :
     p ∈ pi I H ↔ ∀ i : η, i ∈ I → p i ∈ H i :=
@@ -2956,36 +1858,18 @@ theorem mem_pi (I : Set η) {H : ∀ i, Subgroup (f i)} {p : ∀ i, f i} :
 #align subgroup.mem_pi Subgroup.mem_pi
 #align add_subgroup.mem_pi AddSubgroup.mem_pi
 
-/- warning: subgroup.pi_top -> Subgroup.pi_top is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] (I : Set.{u1} η), Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I (fun (i : η) => Top.top.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Subgroup.hasTop.{u2} (f i) (_inst_6 i)))) (Top.top.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.hasTop.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))
-but is expected to have type
-  forall {η : Type.{u2}} {f : η -> Type.{u1}} [_inst_6 : forall (i : η), Group.{u1} (f i)] (I : Set.{u2} η), Eq.{max (succ u2) (succ u1)} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I (fun (i : η) => Top.top.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (Subgroup.instTopSubgroup.{u1} (f i) (_inst_6 i)))) (Top.top.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.instTopSubgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.pi_top Subgroup.pi_topₓ'. -/
 @[to_additive]
 theorem pi_top (I : Set η) : (pi I fun i => (⊤ : Subgroup (f i))) = ⊤ :=
   ext fun x => by simp [mem_pi]
 #align subgroup.pi_top Subgroup.pi_top
 #align add_subgroup.pi_top AddSubgroup.pi_top
 
-/- warning: subgroup.pi_empty -> Subgroup.pi_empty is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] (H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)), Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) (EmptyCollection.emptyCollection.{u1} (Set.{u1} η) (Set.hasEmptyc.{u1} η)) H) (Top.top.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.hasTop.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))
-but is expected to have type
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] (H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)), Eq.{max (succ u1) (succ u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) (EmptyCollection.emptyCollection.{u1} (Set.{u1} η) (Set.instEmptyCollectionSet.{u1} η)) H) (Top.top.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.instTopSubgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.pi_empty Subgroup.pi_emptyₓ'. -/
 @[to_additive]
 theorem pi_empty (H : ∀ i, Subgroup (f i)) : pi ∅ H = ⊤ :=
   ext fun x => by simp [mem_pi]
 #align subgroup.pi_empty Subgroup.pi_empty
 #align add_subgroup.pi_empty AddSubgroup.pi_empty
 
-/- warning: subgroup.pi_bot -> Subgroup.pi_bot is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)], Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) (Set.univ.{u1} η) (fun (i : η) => Bot.bot.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Subgroup.hasBot.{u2} (f i) (_inst_6 i)))) (Bot.bot.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.hasBot.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))
-but is expected to have type
-  forall {η : Type.{u2}} {f : η -> Type.{u1}} [_inst_6 : forall (i : η), Group.{u1} (f i)], Eq.{max (succ u2) (succ u1)} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) (Set.univ.{u2} η) (fun (i : η) => Bot.bot.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (Subgroup.instBotSubgroup.{u1} (f i) (_inst_6 i)))) (Bot.bot.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.instBotSubgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.pi_bot Subgroup.pi_botₓ'. -/
 @[to_additive]
 theorem pi_bot : (pi Set.univ fun i => (⊥ : Subgroup (f i))) = ⊥ :=
   (eq_bot_iff_forall _).mpr fun p hp => by simp only [mem_pi, mem_bot] at *; ext j;
@@ -2993,12 +1877,6 @@ theorem pi_bot : (pi Set.univ fun i => (⊥ : Subgroup (f i))) = ⊥ :=
 #align subgroup.pi_bot Subgroup.pi_bot
 #align add_subgroup.pi_bot AddSubgroup.pi_bot
 
-/- warning: subgroup.le_pi_iff -> Subgroup.le_pi_iff is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] {I : Set.{u1} η} {H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)} {J : Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.setLike.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))))) J (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (forall (i : η), (Membership.Mem.{u1, u1} η (Set.{u1} η) (Set.hasMem.{u1} η) i I) -> (LE.le.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Preorder.toHasLe.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} (f i) (_inst_6 i)) (f i) (Subgroup.setLike.{u2} (f i) (_inst_6 i))))) (Subgroup.map.{max u1 u2, u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)) (f i) (_inst_6 i) (Pi.evalMonoidHom.{u1, u2} η f (fun (i : η) => Monoid.toMulOneClass.{u2} (f i) (DivInvMonoid.toMonoid.{u2} (f i) (Group.toDivInvMonoid.{u2} (f i) (_inst_6 i)))) i) J) (H i)))
-but is expected to have type
-  forall {η : Type.{u2}} {f : η -> Type.{u1}} [_inst_6 : forall (i : η), Group.{u1} (f i)] {I : Set.{u2} η} {H : forall (i : η), Subgroup.{u1} (f i) (_inst_6 i)} {J : Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))}, Iff (LE.le.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Preorder.toLE.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))))) J (Subgroup.pi.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (forall (i : η), (Membership.mem.{u2, u2} η (Set.{u2} η) (Set.instMembershipSet.{u2} η) i I) -> (LE.le.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (Preorder.toLE.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (Subgroup.instCompleteLatticeSubgroup.{u1} (f i) (_inst_6 i)))))) (Subgroup.map.{max u2 u1, u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)) (f i) (_inst_6 i) (Pi.evalMonoidHom.{u2, u1} η f (fun (i : η) => Monoid.toMulOneClass.{u1} (f i) (DivInvMonoid.toMonoid.{u1} (f i) (Group.toDivInvMonoid.{u1} (f i) (_inst_6 i)))) i) J) (H i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_pi_iff Subgroup.le_pi_iffₓ'. -/
 @[to_additive]
 theorem le_pi_iff {I : Set η} {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i, f i)} :
     J ≤ pi I H ↔ ∀ i : η, i ∈ I → map (Pi.evalMonoidHom f i) J ≤ H i :=
@@ -3009,12 +1887,6 @@ theorem le_pi_iff {I : Set η} {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i,
 #align subgroup.le_pi_iff Subgroup.le_pi_iff
 #align add_subgroup.le_pi_iff AddSubgroup.le_pi_iff
 
-/- warning: subgroup.mul_single_mem_pi -> Subgroup.mulSingle_mem_pi is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] [_inst_7 : DecidableEq.{succ u1} η] {I : Set.{u1} η} {H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)} (i : η) (x : f i), Iff (Membership.Mem.{max u1 u2, max u1 u2} (forall (i : η), f i) (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.setLike.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))) (Pi.mulSingle.{u1, u2} η (fun (i : η) => f i) (fun (a : η) (b : η) => _inst_7 a b) (fun (i : η) => MulOneClass.toHasOne.{u2} (f i) (Monoid.toMulOneClass.{u2} (f i) (DivInvMonoid.toMonoid.{u2} (f i) (Group.toDivInvMonoid.{u2} (f i) (_inst_6 i))))) i x) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) ((Membership.Mem.{u1, u1} η (Set.{u1} η) (Set.hasMem.{u1} η) i I) -> (Membership.Mem.{u2, u2} (f i) (Subgroup.{u2} (f i) (_inst_6 i)) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} (f i) (_inst_6 i)) (f i) (Subgroup.setLike.{u2} (f i) (_inst_6 i))) x (H i)))
-but is expected to have type
-  forall {η : Type.{u2}} {f : η -> Type.{u1}} [_inst_6 : forall (i : η), Group.{u1} (f i)] [_inst_7 : DecidableEq.{succ u2} η] {I : Set.{u2} η} {H : forall (i : η), Subgroup.{u1} (f i) (_inst_6 i)} (i : η) (x : f i), Iff (Membership.mem.{max u1 u2, max u1 u2} (forall (i : η), f i) (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.instSetLikeSubgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))) (Pi.mulSingle.{u2, u1} η f (fun (a : η) (b : η) => _inst_7 a b) (fun (i : η) => InvOneClass.toOne.{u1} (f i) (DivInvOneMonoid.toInvOneClass.{u1} (f i) (DivisionMonoid.toDivInvOneMonoid.{u1} (f i) (Group.toDivisionMonoid.{u1} (f i) (_inst_6 i))))) i x) (Subgroup.pi.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) ((Membership.mem.{u2, u2} η (Set.{u2} η) (Set.instMembershipSet.{u2} η) i I) -> (Membership.mem.{u1, u1} (f i) (Subgroup.{u1} (f i) (_inst_6 i)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (f i) (_inst_6 i)) (f i) (Subgroup.instSetLikeSubgroup.{u1} (f i) (_inst_6 i))) x (H i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mul_single_mem_pi Subgroup.mulSingle_mem_piₓ'. -/
 @[simp, to_additive]
 theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i)} (i : η) (x : f i) :
     Pi.mulSingle i x ∈ pi I H ↔ i ∈ I → x ∈ H i :=
@@ -3028,12 +1900,6 @@ theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i
 #align subgroup.mul_single_mem_pi Subgroup.mulSingle_mem_pi
 #align add_subgroup.single_mem_pi AddSubgroup.single_mem_pi
 
-/- warning: subgroup.pi_eq_bot_iff -> Subgroup.pi_eq_bot_iff is a dubious translation:
-lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] (H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)), Iff (Eq.{succ (max u1 u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) (Set.univ.{u1} η) H) (Bot.bot.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.hasBot.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))) (forall (i : η), Eq.{succ u2} (Subgroup.{u2} (f i) (_inst_6 i)) (H i) (Bot.bot.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Subgroup.hasBot.{u2} (f i) (_inst_6 i))))
-but is expected to have type
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] (H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)), Iff (Eq.{max (succ u1) (succ u2)} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) (Set.univ.{u1} η) H) (Bot.bot.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.instBotSubgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))) (forall (i : η), Eq.{succ u2} (Subgroup.{u2} (f i) (_inst_6 i)) (H i) (Bot.bot.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Subgroup.instBotSubgroup.{u2} (f i) (_inst_6 i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.pi_eq_bot_iff Subgroup.pi_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀ i, H i = ⊥ := by
   classical
@@ -3092,12 +1958,6 @@ namespace Normal
 
 variable (nH : H.Normal)
 
-/- warning: subgroup.normal.mem_comm -> Subgroup.Normal.mem_comm is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall {a : G} {b : 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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal.mem_comm Subgroup.Normal.mem_commₓ'. -/
 @[to_additive]
 theorem mem_comm {a b : G} (h : a * b ∈ H) : b * a ∈ H :=
   by
@@ -3106,12 +1966,6 @@ theorem mem_comm {a b : G} (h : a * b ∈ H) : b * a ∈ H :=
 #align subgroup.normal.mem_comm Subgroup.Normal.mem_comm
 #align add_subgroup.normal.mem_comm AddSubgroup.Normal.mem_comm
 
-/- warning: subgroup.normal.mem_comm_iff -> Subgroup.Normal.mem_comm_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall {a : G} {b : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall {a : G} {b : G}, Iff (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal.mem_comm_iff Subgroup.Normal.mem_comm_iffₓ'. -/
 @[to_additive]
 theorem mem_comm_iff {a b : G} : a * b ∈ H ↔ b * a ∈ H :=
   ⟨nH.mem_comm, nH.mem_comm⟩
@@ -3168,24 +2022,12 @@ namespace Subgroup
 
 variable {H K : Subgroup G}
 
-/- warning: subgroup.characteristic_iff_comap_eq -> Subgroup.characteristic_iff_comap_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_comap_eq Subgroup.characteristic_iff_comap_eqₓ'. -/
 @[to_additive]
 theorem characteristic_iff_comap_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.comap ϕ.toMonoidHom = H :=
   ⟨Characteristic.fixed, Characteristic.mk⟩
 #align subgroup.characteristic_iff_comap_eq Subgroup.characteristic_iff_comap_eq
 #align add_subgroup.characteristic_iff_comap_eq AddSubgroup.characteristic_iff_comap_eq
 
-/- warning: subgroup.characteristic_iff_comap_le -> Subgroup.characteristic_iff_comap_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_comap_le Subgroup.characteristic_iff_comap_leₓ'. -/
 @[to_additive]
 theorem characteristic_iff_comap_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.comap ϕ.toMonoidHom ≤ H :=
   characteristic_iff_comap_eq.trans
@@ -3194,12 +2036,6 @@ theorem characteristic_iff_comap_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.
 #align subgroup.characteristic_iff_comap_le Subgroup.characteristic_iff_comap_le
 #align add_subgroup.characteristic_iff_comap_le AddSubgroup.characteristic_iff_comap_le
 
-/- warning: subgroup.characteristic_iff_le_comap -> Subgroup.characteristic_iff_le_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) H (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) H (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_le_comap Subgroup.characteristic_iff_le_comapₓ'. -/
 @[to_additive]
 theorem characteristic_iff_le_comap : H.Characteristic ↔ ∀ ϕ : G ≃* G, H ≤ H.comap ϕ.toMonoidHom :=
   characteristic_iff_comap_eq.trans
@@ -3208,12 +2044,6 @@ theorem characteristic_iff_le_comap : H.Characteristic ↔ ∀ ϕ : G ≃* G, H
 #align subgroup.characteristic_iff_le_comap Subgroup.characteristic_iff_le_comap
 #align add_subgroup.characteristic_iff_le_comap AddSubgroup.characteristic_iff_le_comap
 
-/- warning: subgroup.characteristic_iff_map_eq -> Subgroup.characteristic_iff_map_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_map_eq Subgroup.characteristic_iff_map_eqₓ'. -/
 @[to_additive]
 theorem characteristic_iff_map_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.map ϕ.toMonoidHom = H :=
   by
@@ -3222,12 +2052,6 @@ theorem characteristic_iff_map_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.ma
 #align subgroup.characteristic_iff_map_eq Subgroup.characteristic_iff_map_eq
 #align add_subgroup.characteristic_iff_map_eq AddSubgroup.characteristic_iff_map_eq
 
-/- warning: subgroup.characteristic_iff_map_le -> Subgroup.characteristic_iff_map_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_map_le Subgroup.characteristic_iff_map_leₓ'. -/
 @[to_additive]
 theorem characteristic_iff_map_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.map ϕ.toMonoidHom ≤ H :=
   by
@@ -3236,12 +2060,6 @@ theorem characteristic_iff_map_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.ma
 #align subgroup.characteristic_iff_map_le Subgroup.characteristic_iff_map_le
 #align add_subgroup.characteristic_iff_map_le AddSubgroup.characteristic_iff_map_le
 
-/- warning: subgroup.characteristic_iff_le_map -> Subgroup.characteristic_iff_le_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) H (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) H (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_le_map Subgroup.characteristic_iff_le_mapₓ'. -/
 @[to_additive]
 theorem characteristic_iff_le_map : H.Characteristic ↔ ∀ ϕ : G ≃* G, H ≤ H.map ϕ.toMonoidHom :=
   by
@@ -3250,24 +2068,12 @@ theorem characteristic_iff_le_map : H.Characteristic ↔ ∀ ϕ : G ≃* G, H 
 #align subgroup.characteristic_iff_le_map Subgroup.characteristic_iff_le_map
 #align add_subgroup.characteristic_iff_le_map AddSubgroup.characteristic_iff_le_map
 
-/- warning: subgroup.bot_characteristic -> Subgroup.botCharacteristic is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Subgroup.Characteristic.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Subgroup.Characteristic.{u1} G _inst_1 (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.bot_characteristic Subgroup.botCharacteristicₓ'. -/
 @[to_additive]
 instance botCharacteristic : Characteristic (⊥ : Subgroup G) :=
   characteristic_iff_le_map.mpr fun ϕ => bot_le
 #align subgroup.bot_characteristic Subgroup.botCharacteristic
 #align add_subgroup.bot_characteristic AddSubgroup.botCharacteristic
 
-/- warning: subgroup.top_characteristic -> Subgroup.topCharacteristic is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Subgroup.Characteristic.{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], Subgroup.Characteristic.{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 subgroup.top_characteristic Subgroup.topCharacteristicₓ'. -/
 @[to_additive]
 instance topCharacteristic : Characteristic (⊤ : Subgroup G) :=
   characteristic_iff_map_le.mpr fun ϕ => le_top
@@ -3288,12 +2094,6 @@ def center : Subgroup G :=
 #align add_subgroup.center AddSubgroup.center
 -/
 
-/- warning: subgroup.coe_center -> Subgroup.coe_center is a dubious translation:
-lean 3 declaration is
-  forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.center.{u1} G _inst_1)) (Set.center.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{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) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.center.{u1} G _inst_1)) (Set.center.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_center Subgroup.coe_centerₓ'. -/
 @[to_additive]
 theorem coe_center : ↑(center G) = Set.center G :=
   rfl
@@ -3310,24 +2110,12 @@ theorem center_toSubmonoid : (center G).toSubmonoid = Submonoid.center G :=
 
 variable {G}
 
-/- warning: subgroup.mem_center_iff -> Subgroup.mem_center_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {z : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) z (Subgroup.center.{u1} G _inst_1)) (forall (g : G), Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g z) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) z g))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {z : G}, Iff (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)) z (Subgroup.center.{u1} G _inst_1)) (forall (g : G), Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g z) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) z g))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_center_iff Subgroup.mem_center_iffₓ'. -/
 @[to_additive]
 theorem mem_center_iff {z : G} : z ∈ center G ↔ ∀ g, g * z = z * g :=
   Iff.rfl
 #align subgroup.mem_center_iff Subgroup.mem_center_iff
 #align add_subgroup.mem_center_iff AddSubgroup.mem_center_iff
 
-/- warning: subgroup.decidable_mem_center -> Subgroup.decidableMemCenter is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (z : G) [_inst_4 : Decidable (forall (g : G), Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g z) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) z g))], Decidable (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) z (Subgroup.center.{u1} G _inst_1))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (z : G) [_inst_4 : Decidable (forall (g : G), Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g z) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) z g))], Decidable (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)) z (Subgroup.center.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align subgroup.decidable_mem_center Subgroup.decidableMemCenterₓ'. -/
 instance decidableMemCenter (z : G) [Decidable (∀ g, g * z = z * g)] : Decidable (z ∈ center G) :=
   decidable_of_iff' _ mem_center_iff
 #align subgroup.decidable_mem_center Subgroup.decidableMemCenter
@@ -3343,22 +2131,10 @@ instance centerCharacteristic : (center G).Characteristic :=
 #align add_subgroup.center_characteristic AddSubgroup.centerCharacteristic
 -/
 
-/- warning: comm_group.center_eq_top -> CommGroup.center_eq_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_4 : CommGroup.{u1} G], Eq.{succ u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Subgroup.center.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Top.top.{u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Subgroup.hasTop.{u1} G (CommGroup.toGroup.{u1} G _inst_4)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_4 : CommGroup.{u1} G], Eq.{succ u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Subgroup.center.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Top.top.{u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Subgroup.instTopSubgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)))
-Case conversion may be inaccurate. Consider using '#align comm_group.center_eq_top CommGroup.center_eq_topₓ'. -/
 theorem CommGroup.center_eq_top {G : Type _} [CommGroup G] : center G = ⊤ := by rw [eq_top_iff'];
   intro x y; exact mul_comm y x
 #align comm_group.center_eq_top CommGroup.center_eq_top
 
-/- warning: group.comm_group_of_center_eq_top -> Group.commGroupOfCenterEqTop 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) (Subgroup.center.{u1} G _inst_1) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) -> (CommGroup.{u1} G)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.center.{u1} G _inst_1) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))) -> (CommGroup.{u1} G)
-Case conversion may be inaccurate. Consider using '#align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTopₓ'. -/
 /-- A group is commutative if the center is the whole group -/
 def Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
   { (_ : Group G) with mul_comm := by rw [eq_top_iff'] at h; intro x y; exact h y x }
@@ -3401,36 +2177,18 @@ def setNormalizer (S : Set G) : Subgroup G
 
 variable {H}
 
-/- warning: subgroup.mem_normalizer_iff -> Subgroup.mem_normalizer_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g (Subgroup.normalizer.{u1} G _inst_1 H)) (forall (h : G), Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g h) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g)) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (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)) g (Subgroup.normalizer.{u1} G _inst_1 H)) (forall (h : G), Iff (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)) h H) (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g h) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) g)) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_normalizer_iff Subgroup.mem_normalizer_iffₓ'. -/
 @[to_additive]
 theorem mem_normalizer_iff {g : G} : g ∈ H.normalizer ↔ ∀ h, h ∈ H ↔ g * h * g⁻¹ ∈ H :=
   Iff.rfl
 #align subgroup.mem_normalizer_iff Subgroup.mem_normalizer_iff
 #align add_subgroup.mem_normalizer_iff AddSubgroup.mem_normalizer_iff
 
-/- warning: subgroup.mem_normalizer_iff'' -> Subgroup.mem_normalizer_iff'' is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g (Subgroup.normalizer.{u1} G _inst_1 H)) (forall (h : G), Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g) h) g) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (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)) g (Subgroup.normalizer.{u1} G _inst_1 H)) (forall (h : G), Iff (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)) h H) (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) g) h) g) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_normalizer_iff'' Subgroup.mem_normalizer_iff''ₓ'. -/
 @[to_additive]
 theorem mem_normalizer_iff'' {g : G} : g ∈ H.normalizer ↔ ∀ h : G, h ∈ H ↔ g⁻¹ * h * g ∈ H := by
   rw [← inv_mem_iff, mem_normalizer_iff, inv_inv]
 #align subgroup.mem_normalizer_iff'' Subgroup.mem_normalizer_iff''
 #align add_subgroup.mem_normalizer_iff'' AddSubgroup.mem_normalizer_iff''
 
-/- warning: subgroup.mem_normalizer_iff' -> Subgroup.mem_normalizer_iff' is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g (Subgroup.normalizer.{u1} G _inst_1 H)) (forall (n : G), Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) n g) H) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g n) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (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)) g (Subgroup.normalizer.{u1} G _inst_1 H)) (forall (n : G), Iff (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) n g) H) (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g n) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_normalizer_iff' Subgroup.mem_normalizer_iff'ₓ'. -/
 @[to_additive]
 theorem mem_normalizer_iff' {g : G} : g ∈ H.normalizer ↔ ∀ n, n * g ∈ H ↔ g * n ∈ H :=
   ⟨fun h n => by rw [h, mul_assoc, mul_inv_cancel_right], fun h n => by
@@ -3438,36 +2196,18 @@ theorem mem_normalizer_iff' {g : G} : g ∈ H.normalizer ↔ ∀ n, n * g ∈ H
 #align subgroup.mem_normalizer_iff' Subgroup.mem_normalizer_iff'
 #align add_subgroup.mem_normalizer_iff' AddSubgroup.mem_normalizer_iff'
 
-/- warning: subgroup.le_normalizer -> Subgroup.le_normalizer is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) H (Subgroup.normalizer.{u1} G _inst_1 H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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))))) H (Subgroup.normalizer.{u1} G _inst_1 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer Subgroup.le_normalizerₓ'. -/
 @[to_additive]
 theorem le_normalizer : H ≤ normalizer H := fun x xH n => by
   rw [H.mul_mem_cancel_right (H.inv_mem xH), H.mul_mem_cancel_left xH]
 #align subgroup.le_normalizer Subgroup.le_normalizer
 #align add_subgroup.le_normalizer AddSubgroup.le_normalizer
 
-/- warning: subgroup.normal_in_normalizer -> Subgroup.normal_in_normalizer is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Subgroup.Normal.{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)) (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 H (Subgroup.normalizer.{u1} G _inst_1 H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Subgroup.Normal.{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 (Subgroup.normalizer.{u1} G _inst_1 H))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.subgroupOf.{u1} G _inst_1 H (Subgroup.normalizer.{u1} G _inst_1 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_in_normalizer Subgroup.normal_in_normalizerₓ'. -/
 @[to_additive]
 instance (priority := 100) normal_in_normalizer : (H.subgroupOf H.normalizer).Normal :=
   ⟨fun x xH g => by simpa using (g.2 x).1 xH⟩
 #align subgroup.normal_in_normalizer Subgroup.normal_in_normalizer
 #align add_subgroup.normal_in_normalizer AddSubgroup.normal_in_normalizer
 
-/- warning: subgroup.normalizer_eq_top -> Subgroup.normalizer_eq_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.normalizer_eq_top Subgroup.normalizer_eq_topₓ'. -/
 @[to_additive]
 theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
   eq_top_iff.trans
@@ -3476,12 +2216,6 @@ theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
 #align subgroup.normalizer_eq_top Subgroup.normalizer_eq_top
 #align add_subgroup.normalizer_eq_top AddSubgroup.normalizer_eq_top
 
-/- warning: subgroup.center_le_normalizer -> Subgroup.center_le_normalizer is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) (Subgroup.center.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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))))) (Subgroup.center.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.center_le_normalizer Subgroup.center_le_normalizerₓ'. -/
 @[to_additive]
 theorem center_le_normalizer : center G ≤ H.normalizer := fun x hx y => by
   simp [← mem_center_iff.mp hx y, mul_assoc]
@@ -3490,12 +2224,6 @@ theorem center_le_normalizer : center G ≤ H.normalizer := fun x hx y => by
 
 open Classical
 
-/- warning: subgroup.le_normalizer_of_normal -> Subgroup.le_normalizer_of_normal is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} [hK : Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)], (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)))) H K) -> (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)))) K (Subgroup.normalizer.{u1} G _inst_1 H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} [hK : Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)], (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))))) H K) -> (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))))) K (Subgroup.normalizer.{u1} G _inst_1 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer_of_normal Subgroup.le_normalizer_of_normalₓ'. -/
 @[to_additive]
 theorem le_normalizer_of_normal [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) : K ≤ H.normalizer :=
   fun x hx y =>
@@ -3507,12 +2235,6 @@ theorem le_normalizer_of_normal [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) :
 
 variable {N : Type _} [Group N]
 
-/- warning: subgroup.le_normalizer_comap -> Subgroup.le_normalizer_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer_comap Subgroup.le_normalizer_comapₓ'. -/
 /-- The preimage of the normalizer is contained in the normalizer of the preimage. -/
 @[to_additive "The preimage of the normalizer is contained in the normalizer of the preimage."]
 theorem le_normalizer_comap (f : N →* G) : H.normalizer.comap f ≤ (H.comap f).normalizer := fun x =>
@@ -3523,12 +2245,6 @@ theorem le_normalizer_comap (f : N →* G) : H.normalizer.comap f ≤ (H.comap f
 #align subgroup.le_normalizer_comap Subgroup.le_normalizer_comap
 #align add_subgroup.le_normalizer_comap AddSubgroup.le_normalizer_comap
 
-/- warning: subgroup.le_normalizer_map -> Subgroup.le_normalizer_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {H : Subgroup.{u2} G _inst_1} {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer_map Subgroup.le_normalizer_mapₓ'. -/
 /-- The image of the normalizer is contained in the normalizer of the image. -/
 @[to_additive "The image of the normalizer is contained in the normalizer of the image."]
 theorem le_normalizer_map (f : G →* N) : H.normalizer.map f ≤ (H.map f).normalizer := fun _ =>
@@ -3557,12 +2273,6 @@ def NormalizerCondition :=
 
 variable {G}
 
-/- warning: normalizer_condition_iff_only_full_group_self_normalizing -> normalizerCondition_iff_only_full_group_self_normalizing is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Iff (NormalizerCondition.{u1} G _inst_1) (forall (H : Subgroup.{u1} G _inst_1), (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H) H) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (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], Iff (NormalizerCondition.{u1} G _inst_1) (forall (H : Subgroup.{u1} G _inst_1), (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H) H) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))))
-Case conversion may be inaccurate. Consider using '#align normalizer_condition_iff_only_full_group_self_normalizing normalizerCondition_iff_only_full_group_self_normalizingₓ'. -/
 /-- Alternative phrasing of the normalizer condition: Only the full group is self-normalizing.
 This may be easier to work with, as it avoids inequalities and negations.  -/
 theorem normalizerCondition_iff_only_full_group_self_normalizing :
@@ -3575,12 +2285,6 @@ theorem normalizerCondition_iff_only_full_group_self_normalizing :
 
 variable (H)
 
-/- warning: subgroup.normalizer_condition.normal_of_coatom -> Subgroup.NormalizerCondition.normal_of_coatom is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), (NormalizerCondition.{u1} G _inst_1) -> (IsCoatom.{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))) (BoundedOrder.toOrderTop.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H) -> (Subgroup.Normal.{u1} G _inst_1 H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), (NormalizerCondition.{u1} G _inst_1) -> (IsCoatom.{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)))) (BoundedOrder.toOrderTop.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H) -> (Subgroup.Normal.{u1} G _inst_1 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.normalizer_condition.normal_of_coatom Subgroup.NormalizerCondition.normal_of_coatomₓ'. -/
 /-- In a group that satisifes the normalizer condition, every maximal subgroup is normal -/
 theorem NormalizerCondition.normal_of_coatom (hnc : NormalizerCondition G) (hmax : IsCoatom H) :
     H.Normal :=
@@ -3605,24 +2309,12 @@ def centralizer : Subgroup G :=
 
 variable {H}
 
-/- warning: subgroup.mem_centralizer_iff -> Subgroup.mem_centralizer_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g (Subgroup.centralizer.{u1} G _inst_1 H)) (forall (h : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) h g) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g h)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (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)) g (Subgroup.centralizer.{u1} G _inst_1 H)) (forall (h : 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)) h H) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) h g) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) g h)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_centralizer_iff Subgroup.mem_centralizer_iffₓ'. -/
 @[to_additive]
 theorem mem_centralizer_iff {g : G} : g ∈ H.centralizer ↔ ∀ h ∈ H, h * g = g * h :=
   Iff.rfl
 #align subgroup.mem_centralizer_iff Subgroup.mem_centralizer_iff
 #align add_subgroup.mem_centralizer_iff AddSubgroup.mem_centralizer_iff
 
-/- warning: subgroup.mem_centralizer_iff_commutator_eq_one -> Subgroup.mem_centralizer_iff_commutator_eq_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g (Subgroup.centralizer.{u1} G _inst_1 H)) (forall (h : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) h g) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) h)) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g)) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {g : G}, Iff (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)) g (Subgroup.centralizer.{u1} G _inst_1 H)) (forall (h : 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)) h H) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) h g) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) h)) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) g)) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_centralizer_iff_commutator_eq_one Subgroup.mem_centralizer_iff_commutator_eq_oneₓ'. -/
 @[to_additive]
 theorem mem_centralizer_iff_commutator_eq_one {g : G} :
     g ∈ H.centralizer ↔ ∀ h ∈ H, h * g * h⁻¹ * g⁻¹ = 1 := by
@@ -3630,36 +2322,18 @@ theorem mem_centralizer_iff_commutator_eq_one {g : G} :
 #align subgroup.mem_centralizer_iff_commutator_eq_one Subgroup.mem_centralizer_iff_commutator_eq_one
 #align add_subgroup.mem_centralizer_iff_commutator_eq_zero AddSubgroup.mem_centralizer_iff_commutator_eq_zero
 
-/- warning: subgroup.centralizer_top -> Subgroup.centralizer_top 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) (Subgroup.centralizer.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{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], Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.centralizer.{u1} G _inst_1 (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1))) (Subgroup.center.{u1} G _inst_1)
-Case conversion may be inaccurate. Consider using '#align subgroup.centralizer_top Subgroup.centralizer_topₓ'. -/
 @[to_additive]
 theorem centralizer_top : centralizer ⊤ = center G :=
   SetLike.ext' (Set.centralizer_univ G)
 #align subgroup.centralizer_top Subgroup.centralizer_top
 #align add_subgroup.centralizer_top AddSubgroup.centralizer_top
 
-/- warning: subgroup.le_centralizer_iff -> Subgroup.le_centralizer_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (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)))) H (Subgroup.centralizer.{u1} G _inst_1 K)) (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)))) K (Subgroup.centralizer.{u1} G _inst_1 H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (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))))) H (Subgroup.centralizer.{u1} G _inst_1 K)) (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))))) K (Subgroup.centralizer.{u1} G _inst_1 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_centralizer_iff Subgroup.le_centralizer_iffₓ'. -/
 @[to_additive]
 theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
   ⟨fun h x hx y hy => (h hy x hx).symm, fun h x hx y hy => (h hy x hx).symm⟩
 #align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
 #align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
 
-/- warning: subgroup.centralizer_le -> Subgroup.centralizer_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)))) (Subgroup.centralizer.{u1} G _inst_1 K) (Subgroup.centralizer.{u1} G _inst_1 H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (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))))) (Subgroup.centralizer.{u1} G _inst_1 K) (Subgroup.centralizer.{u1} G _inst_1 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.centralizer_le Subgroup.centralizer_leₓ'. -/
 @[to_additive]
 theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
   Submonoid.centralizer_le h
@@ -3700,12 +2374,6 @@ attribute [to_additive AddSubgroup.IsCommutative] Subgroup.IsCommutative
 
 attribute [class] AddSubgroup.IsCommutative
 
-/- warning: subgroup.is_commutative.comm_group -> Subgroup.IsCommutative.commGroup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [h : Subgroup.IsCommutative.{u1} G _inst_1 H], CommGroup.{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)) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [h : Subgroup.IsCommutative.{u1} G _inst_1 H], CommGroup.{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 H))
-Case conversion may be inaccurate. Consider using '#align subgroup.is_commutative.comm_group Subgroup.IsCommutative.commGroupₓ'. -/
 /-- A commutative subgroup is commutative. -/
 @[to_additive "A commutative subgroup is commutative."]
 instance IsCommutative.commGroup [h : H.IsCommutative] : CommGroup H :=
@@ -3730,12 +2398,6 @@ instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommu
 #align add_subgroup.map_is_commutative AddSubgroup.map_isCommutative
 -/
 
-/- warning: subgroup.comap_injective_is_commutative -> Subgroup.comap_injective_isCommutative is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => G' -> G) (MonoidHom.hasCoeToFun.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
-but is expected to have type
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G') => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutativeₓ'. -/
 @[to_additive]
 theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutative] :
     (H.comap f).IsCommutative :=
@@ -3748,24 +2410,12 @@ theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCo
 #align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutative
 #align add_subgroup.comap_injective_is_commutative AddSubgroup.comap_injective_isCommutative
 
-/- warning: subgroup.subgroup_of_is_commutative -> Subgroup.subgroupOf_isCommutative is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {K : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) {K : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_is_commutative Subgroup.subgroupOf_isCommutativeₓ'. -/
 @[to_additive]
 instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommutative :=
   H.comap_injective_isCommutative Subtype.coe_injective
 #align subgroup.subgroup_of_is_commutative Subgroup.subgroupOf_isCommutative
 #align add_subgroup.add_subgroup_of_is_commutative AddSubgroup.addSubgroupOf_isCommutative
 
-/- warning: subgroup.le_centralizer_iff_is_commutative -> Subgroup.le_centralizer_iff_isCommutative is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Subgroup.{u1} G _inst_1}, Iff (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)))) K (Subgroup.centralizer.{u1} G _inst_1 K)) (Subgroup.IsCommutative.{u1} G _inst_1 K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Subgroup.{u1} G _inst_1}, Iff (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))))) K (Subgroup.centralizer.{u1} G _inst_1 K)) (Subgroup.IsCommutative.{u1} G _inst_1 K)
-Case conversion may be inaccurate. Consider using '#align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutativeₓ'. -/
 @[to_additive]
 theorem le_centralizer_iff_isCommutative : K ≤ K.centralizer ↔ K.IsCommutative :=
   ⟨fun h => ⟨⟨fun x y => Subtype.ext (h y.2 x x.2)⟩⟩, fun h x hx y hy =>
@@ -3773,12 +2423,6 @@ theorem le_centralizer_iff_isCommutative : K ≤ K.centralizer ↔ K.IsCommutati
 #align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutative
 #align add_subgroup.le_centralizer_iff_is_commutative AddSubgroup.le_centralizer_iff_isCommutative
 
-/- warning: subgroup.le_centralizer -> Subgroup.le_centralizer is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [h : Subgroup.IsCommutative.{u1} G _inst_1 H], 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)))) H (Subgroup.centralizer.{u1} G _inst_1 H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [h : Subgroup.IsCommutative.{u1} G _inst_1 H], 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))))) H (Subgroup.centralizer.{u1} G _inst_1 H)
-Case conversion may be inaccurate. Consider using '#align subgroup.le_centralizer Subgroup.le_centralizerₓ'. -/
 @[to_additive]
 theorem le_centralizer [h : H.IsCommutative] : H ≤ H.centralizer :=
   le_centralizer_iff_isCommutative.mpr h
@@ -3799,12 +2443,6 @@ def conjugatesOfSet (s : Set G) : Set G :=
 #align group.conjugates_of_set Group.conjugatesOfSet
 -/
 
-/- warning: group.mem_conjugates_of_set_iff -> Group.mem_conjugatesOfSet_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {x : G}, Iff (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x (Group.conjugatesOfSet.{u1} G _inst_1 s)) (Exists.{succ u1} G (fun (a : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a s) (fun (H : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a s) => IsConj.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) a x)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {x : G}, Iff (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Group.conjugatesOfSet.{u1} G _inst_1 s)) (Exists.{succ u1} G (fun (a : G) => And (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a s) (IsConj.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) a x)))
-Case conversion may be inaccurate. Consider using '#align group.mem_conjugates_of_set_iff Group.mem_conjugatesOfSet_iffₓ'. -/
 theorem mem_conjugatesOfSet_iff {x : G} : x ∈ conjugatesOfSet s ↔ ∃ a ∈ s, IsConj a x :=
   Set.mem_iUnion₂
 #align group.mem_conjugates_of_set_iff Group.mem_conjugatesOfSet_iff
@@ -3821,34 +2459,16 @@ theorem conjugatesOfSet_mono {s t : Set G} (h : s ⊆ t) : conjugatesOfSet s ⊆
 #align group.conjugates_of_set_mono Group.conjugatesOfSet_mono
 -/
 
-/- warning: group.conjugates_subset_normal -> Group.conjugates_subset_normal is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Subgroup.{u1} G _inst_1} [tn : Subgroup.Normal.{u1} G _inst_1 N] {a : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) a N) -> (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) (conjugatesOf.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) a) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Subgroup.{u1} G _inst_1} [tn : Subgroup.Normal.{u1} G _inst_1 N] {a : 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)) a N) -> (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) (conjugatesOf.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) a) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N))
-Case conversion may be inaccurate. Consider using '#align group.conjugates_subset_normal Group.conjugates_subset_normalₓ'. -/
 theorem conjugates_subset_normal {N : Subgroup G} [tn : N.Normal] {a : G} (h : a ∈ N) :
     conjugatesOf a ⊆ N := by rintro a hc; obtain ⟨c, rfl⟩ := isConj_iff.1 hc;
   exact tn.conj_mem a h c
 #align group.conjugates_subset_normal Group.conjugates_subset_normal
 
-/- warning: group.conjugates_of_set_subset -> Group.conjugatesOfSet_subset is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N)) -> (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) (Group.conjugatesOfSet.{u1} G _inst_1 s) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N)) -> (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) (Group.conjugatesOfSet.{u1} G _inst_1 s) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N))
-Case conversion may be inaccurate. Consider using '#align group.conjugates_of_set_subset Group.conjugatesOfSet_subsetₓ'. -/
 theorem conjugatesOfSet_subset {s : Set G} {N : Subgroup G} [N.Normal] (h : s ⊆ N) :
     conjugatesOfSet s ⊆ N :=
   Set.iUnion₂_subset fun x H => conjugates_subset_normal (h H)
 #align group.conjugates_of_set_subset Group.conjugatesOfSet_subset
 
-/- warning: group.conj_mem_conjugates_of_set -> Group.conj_mem_conjugatesOfSet is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {x : G} {c : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x (Group.conjugatesOfSet.{u1} G _inst_1 s)) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) c x) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) c)) (Group.conjugatesOfSet.{u1} G _inst_1 s))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {x : G} {c : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Group.conjugatesOfSet.{u1} G _inst_1 s)) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) c x) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) c)) (Group.conjugatesOfSet.{u1} G _inst_1 s))
-Case conversion may be inaccurate. Consider using '#align group.conj_mem_conjugates_of_set Group.conj_mem_conjugatesOfSetₓ'. -/
 /-- The set of conjugates of `s` is closed under conjugation. -/
 theorem conj_mem_conjugatesOfSet {x c : G} :
     x ∈ conjugatesOfSet s → c * x * c⁻¹ ∈ conjugatesOfSet s := fun H =>
@@ -3873,32 +2493,14 @@ def normalClosure (s : Set G) : Subgroup G :=
 #align subgroup.normal_closure Subgroup.normalClosure
 -/
 
-/- warning: subgroup.conjugates_of_set_subset_normal_closure -> Subgroup.conjugatesOfSet_subset_normalClosure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G}, HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) (Group.conjugatesOfSet.{u1} G _inst_1 s) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.normalClosure.{u1} G _inst_1 s))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G}, HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) (Group.conjugatesOfSet.{u1} G _inst_1 s) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.normalClosure.{u1} G _inst_1 s))
-Case conversion may be inaccurate. Consider using '#align subgroup.conjugates_of_set_subset_normal_closure Subgroup.conjugatesOfSet_subset_normalClosureₓ'. -/
 theorem conjugatesOfSet_subset_normalClosure : conjugatesOfSet s ⊆ normalClosure s :=
   subset_closure
 #align subgroup.conjugates_of_set_subset_normal_closure Subgroup.conjugatesOfSet_subset_normalClosure
 
-/- warning: subgroup.subset_normal_closure -> Subgroup.subset_normalClosure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G}, HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.normalClosure.{u1} G _inst_1 s))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G}, HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.normalClosure.{u1} G _inst_1 s))
-Case conversion may be inaccurate. Consider using '#align subgroup.subset_normal_closure Subgroup.subset_normalClosureₓ'. -/
 theorem subset_normalClosure : s ⊆ normalClosure s :=
   Set.Subset.trans subset_conjugatesOfSet conjugatesOfSet_subset_normalClosure
 #align subgroup.subset_normal_closure Subgroup.subset_normalClosure
 
-/- warning: subgroup.le_normal_closure -> Subgroup.le_normalClosure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) H (Subgroup.normalClosure.{u1} G _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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))))) H (Subgroup.normalClosure.{u1} G _inst_1 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_normal_closure Subgroup.le_normalClosureₓ'. -/
 theorem le_normalClosure {H : Subgroup G} : H ≤ normalClosure ↑H := fun _ h =>
   subset_normalClosure h
 #align subgroup.le_normal_closure Subgroup.le_normalClosure
@@ -3918,12 +2520,6 @@ instance normalClosure_normal : (normalClosure s).Normal :=
 #align subgroup.normal_closure_normal Subgroup.normalClosure_normal
 -/
 
-/- warning: subgroup.normal_closure_le_normal -> Subgroup.normalClosure_le_normal is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N)) -> (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N)) -> (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))))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_closure_le_normal Subgroup.normalClosure_le_normalₓ'. -/
 /-- The normal closure of `s` is the smallest normal subgroup containing `s`. -/
 theorem normalClosure_le_normal {N : Subgroup G} [N.Normal] (h : s ⊆ N) : normalClosure s ≤ N :=
   by
@@ -3935,22 +2531,10 @@ theorem normalClosure_le_normal {N : Subgroup G} [N.Normal] (h : s ⊆ N) : norm
   · exact inv_mem ihx
 #align subgroup.normal_closure_le_normal Subgroup.normalClosure_le_normal
 
-/- warning: subgroup.normal_closure_subset_iff -> Subgroup.normalClosure_subset_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], Iff (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N)) (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], Iff (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N)) (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))))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_closure_subset_iff Subgroup.normalClosure_subset_iffₓ'. -/
 theorem normalClosure_subset_iff {N : Subgroup G} [N.Normal] : s ⊆ N ↔ normalClosure s ≤ N :=
   ⟨normalClosure_le_normal, Set.Subset.trans subset_normalClosure⟩
 #align subgroup.normal_closure_subset_iff Subgroup.normalClosure_subset_iff
 
-/- warning: subgroup.normal_closure_mono -> Subgroup.normalClosure_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s t) -> (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 t))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s t) -> (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))))) (Subgroup.normalClosure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 t))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_closure_mono Subgroup.normalClosure_monoₓ'. -/
 theorem normalClosure_mono {s t : Set G} (h : s ⊆ t) : normalClosure s ≤ normalClosure t :=
   normalClosure_le_normal (Set.Subset.trans h subset_normalClosure)
 #align subgroup.normal_closure_mono Subgroup.normalClosure_mono
@@ -3978,12 +2562,6 @@ theorem normalClosure_idempotent : normalClosure ↑(normalClosure s) = normalCl
 #align subgroup.normal_closure_idempotent Subgroup.normalClosure_idempotent
 -/
 
-/- warning: subgroup.closure_le_normal_closure -> Subgroup.closure_le_normalClosure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{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)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 s)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{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))))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 s)
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_le_normal_closure Subgroup.closure_le_normalClosureₓ'. -/
 theorem closure_le_normalClosure {s : Set G} : closure s ≤ normalClosure s := by
   simp only [subset_normal_closure, closure_le]
 #align subgroup.closure_le_normal_closure Subgroup.closure_le_normalClosure
@@ -4008,12 +2586,6 @@ def normalCore (H : Subgroup G) : Subgroup G
 #align subgroup.normal_core Subgroup.normalCore
 -/
 
-/- warning: subgroup.normal_core_le -> Subgroup.normalCore_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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)))) (Subgroup.normalCore.{u1} G _inst_1 H) H
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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))))) (Subgroup.normalCore.{u1} G _inst_1 H) H
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_le Subgroup.normalCore_leₓ'. -/
 theorem normalCore_le (H : Subgroup G) : H.normalCore ≤ H := fun a h => by
   rw [← mul_one a, ← inv_one, ← one_mul a]; exact h 1
 #align subgroup.normal_core_le Subgroup.normalCore_le
@@ -4025,33 +2597,15 @@ instance normalCore_normal (H : Subgroup G) : H.normalCore.Normal :=
 #align subgroup.normal_core_normal Subgroup.normalCore_normal
 -/
 
-/- warning: subgroup.normal_le_normal_core -> Subgroup.normal_le_normalCore is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [hN : Subgroup.Normal.{u1} G _inst_1 N], Iff (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)))) N (Subgroup.normalCore.{u1} G _inst_1 H)) (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)))) N H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [hN : Subgroup.Normal.{u1} G _inst_1 N], Iff (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))))) N (Subgroup.normalCore.{u1} G _inst_1 H)) (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))))) N H)
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_le_normal_core Subgroup.normal_le_normalCoreₓ'. -/
 theorem normal_le_normalCore {H : Subgroup G} {N : Subgroup G} [hN : N.Normal] :
     N ≤ H.normalCore ↔ N ≤ H :=
   ⟨ge_trans H.normalCore_le, fun h_le n hn g => h_le (hN.conj_mem n hn g)⟩
 #align subgroup.normal_le_normal_core Subgroup.normal_le_normalCore
 
-/- warning: subgroup.normal_core_mono -> Subgroup.normalCore_mono is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)))) (Subgroup.normalCore.{u1} G _inst_1 H) (Subgroup.normalCore.{u1} G _inst_1 K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (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))))) (Subgroup.normalCore.{u1} G _inst_1 H) (Subgroup.normalCore.{u1} G _inst_1 K))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_mono Subgroup.normalCore_monoₓ'. -/
 theorem normalCore_mono {H K : Subgroup G} (h : H ≤ K) : H.normalCore ≤ K.normalCore :=
   normal_le_normalCore.mpr (H.normalCore_le.trans h)
 #align subgroup.normal_core_mono Subgroup.normalCore_mono
 
-/- warning: subgroup.normal_core_eq_supr -> Subgroup.normalCore_eq_iSup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (iSup.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (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)))) N H) (fun (hs : 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)))) N H) => N))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (iSup.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (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))))) N H) (fun (hs : 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))))) N H) => N))))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_iSupₓ'. -/
 theorem normalCore_eq_iSup (H : Subgroup G) :
     H.normalCore = ⨆ (N : Subgroup G) (_ : Normal N) (hs : N ≤ H), N :=
   le_antisymm
@@ -4091,47 +2645,23 @@ def range (f : G →* N) : Subgroup N :=
 #align add_monoid_hom.range AddMonoidHom.range
 -/
 
-/- warning: monoid_hom.coe_range -> MonoidHom.coe_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Set.range.{u2, succ u1} N G (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range MonoidHom.coe_rangeₓ'. -/
 @[simp, to_additive]
 theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
   rfl
 #align monoid_hom.coe_range MonoidHom.coe_range
 #align add_monoid_hom.coe_range AddMonoidHom.coe_range
 
-/- warning: monoid_hom.mem_range -> MonoidHom.mem_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Exists.{succ u1} G (fun (x : G) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_range MonoidHom.mem_rangeₓ'. -/
 @[simp, to_additive]
 theorem mem_range {f : G →* N} {y : N} : y ∈ f.range ↔ ∃ x, f x = y :=
   Iff.rfl
 #align monoid_hom.mem_range MonoidHom.mem_range
 #align add_monoid_hom.mem_range AddMonoidHom.mem_range
 
-/- warning: monoid_hom.range_eq_map -> MonoidHom.range_eq_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.range_eq_map MonoidHom.range_eq_mapₓ'. -/
 @[to_additive]
 theorem range_eq_map (f : G →* N) : f.range = (⊤ : Subgroup G).map f := by ext <;> simp
 #align monoid_hom.range_eq_map MonoidHom.range_eq_map
 #align add_monoid_hom.range_eq_map AddMonoidHom.range_eq_map
 
-/- warning: monoid_hom.restrict_range -> MonoidHom.restrict_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) N _inst_4 (MonoidHom.restrict.{u1, u2, u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) N (Subgroup.{u1} G _inst_1) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.setLike.{u1} G _inst_1) (SubgroupClass.to_submonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.setLike.{u1} G _inst_1) (Subgroup.subgroupClass.{u1} G _inst_1)) f K)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)) (Subgroup.toGroup.{u2} G _inst_1 K) N _inst_4 (MonoidHom.restrict.{u2, u1, u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) N (Subgroup.{u2} G _inst_1) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (SubgroupClass.toSubmonoidClass.{u2, u2} (Subgroup.{u2} G _inst_1) G (Group.toDivInvMonoid.{u2} G _inst_1) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u2} G _inst_1)) f K)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.restrict_range MonoidHom.restrict_rangeₓ'. -/
 @[simp, to_additive]
 theorem restrict_range (f : G →* N) : (f.restrict K).range = K.map f := by
   simp_rw [SetLike.ext_iff, mem_range, mem_map, restrict_apply, SetLike.exists, Subtype.coe_mk,
@@ -4139,12 +2669,6 @@ theorem restrict_range (f : G →* N) : (f.restrict K).range = K.map f := by
 #align monoid_hom.restrict_range MonoidHom.restrict_range
 #align add_monoid_hom.restrict_range AddMonoidHom.restrict_range
 
-/- warning: monoid_hom.range_restrict -> MonoidHom.rangeRestrict is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), MonoidHom.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.toSubmonoid.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.range_restrict MonoidHom.rangeRestrictₓ'. -/
 /-- The canonical surjective group homomorphism `G →* f(G)` induced by a group
 homomorphism `G →* N`. -/
 @[to_additive
@@ -4154,18 +2678,12 @@ def rangeRestrict (f : G →* N) : G →* f.range :=
 #align monoid_hom.range_restrict MonoidHom.rangeRestrict
 #align add_monoid_hom.range_restrict AddMonoidHom.rangeRestrict
 
-/- warning: monoid_hom.coe_range_restrict -> MonoidHom.coe_rangeRestrict is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f g :=
   rfl
 #align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrict
 #align add_monoid_hom.coe_range_restrict AddMonoidHom.coe_rangeRestrict
 
-/- warning: monoid_hom.coe_comp_range_restrict -> MonoidHom.coe_comp_rangeRestrict is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem coe_comp_rangeRestrict (f : G →* N) :
     (coe : f.range → N) ∘ (⇑f.range_restrict : G → f.range) = f :=
@@ -4173,48 +2691,24 @@ theorem coe_comp_rangeRestrict (f : G →* N) :
 #align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrict
 #align add_monoid_hom.coe_comp_range_restrict AddMonoidHom.coe_comp_rangeRestrict
 
-/- warning: monoid_hom.subtype_comp_range_restrict -> MonoidHom.subtype_comp_rangeRestrict is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHom.comp.{u1, u2, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.subtype.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f)) f
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHom.comp.{u2, u1, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.subtype.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f)) f
-Case conversion may be inaccurate. Consider using '#align monoid_hom.subtype_comp_range_restrict MonoidHom.subtype_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem subtype_comp_rangeRestrict (f : G →* N) : f.range.Subtype.comp f.range_restrict = f :=
   ext <| f.coe_rangeRestrict
 #align monoid_hom.subtype_comp_range_restrict MonoidHom.subtype_comp_rangeRestrict
 #align add_monoid_hom.subtype_comp_range_restrict AddMonoidHom.subtype_comp_rangeRestrict
 
-/- warning: monoid_hom.range_restrict_surjective -> MonoidHom.rangeRestrict_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Function.Surjective.{succ u1, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjectiveₓ'. -/
 @[to_additive]
 theorem rangeRestrict_surjective (f : G →* N) : Function.Surjective f.range_restrict :=
   fun ⟨_, g, rfl⟩ => ⟨g, rfl⟩
 #align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjective
 #align add_monoid_hom.range_restrict_surjective AddMonoidHom.rangeRestrict_surjective
 
-/- warning: monoid_hom.map_range -> MonoidHom.map_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} {P : Type.{u3}} [_inst_4 : Group.{u2} N] [_inst_5 : Group.{u3} P] (g : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u3} (Subgroup.{u3} P _inst_5) (Subgroup.map.{u2, u3} N _inst_4 P _inst_5 g (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.range.{u1, u3} G _inst_1 P _inst_5 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) g f))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u3}} {P : Type.{u2}} [_inst_4 : Group.{u3} N] [_inst_5 : Group.{u2} P] (g : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5)))) (f : MonoidHom.{u1, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} P _inst_5) (Subgroup.map.{u3, u2} N _inst_4 P _inst_5 g (MonoidHom.range.{u1, u3} G _inst_1 N _inst_4 f)) (MonoidHom.range.{u1, u2} G _inst_1 P _inst_5 (MonoidHom.comp.{u1, u3, u2} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) g f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_range MonoidHom.map_rangeₓ'. -/
 @[to_additive]
 theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).range := by
   rw [range_eq_map, range_eq_map] <;> exact (⊤ : Subgroup G).map_map g f
 #align monoid_hom.map_range MonoidHom.map_range
 #align add_monoid_hom.map_range AddMonoidHom.map_range
 
-/- warning: monoid_hom.range_top_iff_surjective -> MonoidHom.range_top_iff_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjectiveₓ'. -/
 @[to_additive]
 theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
     f.range = (⊤ : Subgroup N) ↔ Function.Surjective f :=
@@ -4222,12 +2716,6 @@ theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
 #align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjective
 #align add_monoid_hom.range_top_iff_surjective AddMonoidHom.range_top_iff_surjective
 
-/- warning: monoid_hom.range_top_of_surjective -> MonoidHom.range_top_of_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjectiveₓ'. -/
 /-- The range of a surjective monoid homomorphism is the whole of the codomain. -/
 @[to_additive "The range of a surjective `add_monoid` homomorphism is the whole of the codomain."]
 theorem range_top_of_surjective {N} [Group N] (f : G →* N) (hf : Function.Surjective f) :
@@ -4236,36 +2724,18 @@ theorem range_top_of_surjective {N} [Group N] (f : G →* N) (hf : Function.Surj
 #align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjective
 #align add_monoid_hom.range_top_of_surjective AddMonoidHom.range_top_of_surjective
 
-/- warning: monoid_hom.range_one -> MonoidHom.range_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 (OfNat.ofNat.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (OfNat.mk.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (One.one.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHom.hasOne.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))))) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 (OfNat.ofNat.{max u1 u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (One.toOfNat1.{max u1 u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (instOneMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))))) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instBotSubgroup.{u2} N _inst_4))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.range_one MonoidHom.range_oneₓ'. -/
 @[simp, to_additive]
 theorem range_one : (1 : G →* N).range = ⊥ :=
   SetLike.ext fun x => by simpa using @comm _ (· = ·) _ 1 x
 #align monoid_hom.range_one MonoidHom.range_one
 #align add_monoid_hom.range_zero AddMonoidHom.range_zero
 
-/- warning: subgroup.subtype_range -> Subgroup.subtype_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H)) H
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H)) H
-Case conversion may be inaccurate. Consider using '#align subgroup.subtype_range Subgroup.subtype_rangeₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.subtype_range (H : Subgroup G) : H.Subtype.range = H := by
   rw [range_eq_map, ← SetLike.coe_set_eq, coe_map, Subgroup.coeSubtype]; ext; simp
 #align subgroup.subtype_range Subgroup.subtype_range
 #align add_subgroup.subtype_range AddSubgroup.subtype_range
 
-/- warning: subgroup.inclusion_range -> Subgroup.inclusion_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h_le : 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)))) H K), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.range.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K h_le)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h_le : 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))))) H K), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.range.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K h_le)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_range Subgroup.inclusion_rangeₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
     (inclusion h_le).range = H.subgroupOf K :=
@@ -4273,9 +2743,6 @@ theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
 #align subgroup.inclusion_range Subgroup.inclusion_range
 #align add_subgroup.inclusion_range AddSubgroup.inclusion_range
 
-/- warning: monoid_hom.subgroup_of_range_eq_of_le -> MonoidHom.subgroupOf_range_eq_of_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_leₓ'. -/
 @[to_additive]
 theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
     (f : G₁ →* G₂) (h : f.range ≤ K) :
@@ -4287,12 +2754,6 @@ theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂]
 #align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_le
 #align add_monoid_hom.add_subgroup_of_range_eq_of_le AddMonoidHom.addSubgroupOf_range_eq_of_le
 
-/- warning: monoid_hom.of_left_inverse -> MonoidHom.ofLeftInverse is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse MonoidHom.ofLeftInverseₓ'. -/
 /-- Computable alternative to `monoid_hom.of_injective`. -/
 @[to_additive "Computable alternative to `add_monoid_hom.of_injective`."]
 def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) : G ≃* f.range :=
@@ -4307,9 +2768,6 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
 #align monoid_hom.of_left_inverse MonoidHom.ofLeftInverse
 #align add_monoid_hom.of_left_inverse AddMonoidHom.ofLeftInverse
 
-/- warning: monoid_hom.of_left_inverse_apply -> MonoidHom.ofLeftInverse_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
     ↑(ofLeftInverse h x) = f x :=
@@ -4317,9 +2775,6 @@ theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInve
 #align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_apply
 #align add_monoid_hom.of_left_inverse_apply AddMonoidHom.ofLeftInverse_apply
 
-/- warning: monoid_hom.of_left_inverse_symm_apply -> MonoidHom.ofLeftInverse_symm_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
     (x : f.range) : (ofLeftInverse h).symm x = g x :=
@@ -4327,12 +2782,6 @@ theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.Lef
 #align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_apply
 #align add_monoid_hom.of_left_inverse_symm_apply AddMonoidHom.ofLeftInverse_symm_apply
 
-/- warning: monoid_hom.of_injective -> MonoidHom.ofInjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective MonoidHom.ofInjectiveₓ'. -/
 /-- The range of an injective group homomorphism is isomorphic to its domain. -/
 @[to_additive "The range of an injective additive group homomorphism is isomorphic to its\ndomain."]
 noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃* f.range :=
@@ -4341,9 +2790,6 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
 #align monoid_hom.of_injective MonoidHom.ofInjective
 #align add_monoid_hom.of_injective AddMonoidHom.ofInjective
 
-/- warning: monoid_hom.of_injective_apply -> MonoidHom.ofInjective_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective_apply MonoidHom.ofInjective_applyₓ'. -/
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
     ↑(ofInjective hf x) = f x :=
@@ -4371,48 +2817,24 @@ def ker (f : G →* M) : Subgroup G :=
 #align add_monoid_hom.ker AddMonoidHom.ker
 -/
 
-/- warning: monoid_hom.mem_ker -> MonoidHom.mem_ker is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6)))))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) _inst_6))))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_ker MonoidHom.mem_kerₓ'. -/
 @[to_additive]
 theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
   Iff.rfl
 #align monoid_hom.mem_ker MonoidHom.mem_ker
 #align add_monoid_hom.mem_ker AddMonoidHom.mem_ker
 
-/- warning: monoid_hom.coe_ker -> MonoidHom.coe_ker is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Set.preimage.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f) (Singleton.singleton.{u2, u2} M (Set.{u2} M) (Set.hasSingleton.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6))))))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_ker MonoidHom.coe_kerₓ'. -/
 @[to_additive]
 theorem coe_ker (f : G →* M) : (f.ker : Set G) = (f : G → M) ⁻¹' {1} :=
   rfl
 #align monoid_hom.coe_ker MonoidHom.coe_ker
 #align add_monoid_hom.coe_ker AddMonoidHom.coe_ker
 
-/- warning: monoid_hom.ker_to_hom_units -> MonoidHom.ker_toHomUnits is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_7 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_7)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Units.{u2} M _inst_7) (Units.mulOneClass.{u2} M _inst_7) (MonoidHom.toHomUnits.{u1, u2} G M _inst_1 _inst_7 f)) (MonoidHom.ker.{u1, u2} G _inst_1 M (Monoid.toMulOneClass.{u2} M _inst_7) f)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_7 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_7)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Units.{u2} M _inst_7) (Units.instMulOneClassUnits.{u2} M _inst_7) (MonoidHom.toHomUnits.{u1, u2} G M _inst_1 _inst_7 f)) (MonoidHom.ker.{u1, u2} G _inst_1 M (Monoid.toMulOneClass.{u2} M _inst_7) f)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_to_hom_units MonoidHom.ker_toHomUnitsₓ'. -/
 @[simp, to_additive]
 theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker := by ext x;
   simp [mem_ker, Units.ext_iff]
 #align monoid_hom.ker_to_hom_units MonoidHom.ker_toHomUnits
 #align add_monoid_hom.ker_to_hom_add_units AddMonoidHom.ker_toHomAddUnits
 
-/- warning: monoid_hom.eq_iff -> MonoidHom.eq_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f y)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) y) x) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_iff MonoidHom.eq_iffₓ'. -/
 @[to_additive]
 theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
   by
@@ -4422,60 +2844,30 @@ theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
 #align monoid_hom.eq_iff MonoidHom.eq_iff
 #align add_monoid_hom.eq_iff AddMonoidHom.eq_iff
 
-/- warning: monoid_hom.decidable_mem_ker -> MonoidHom.decidableMemKer is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] [_inst_7 : DecidableEq.{succ u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), DecidablePred.{succ u1} G (fun (_x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) _x (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] [_inst_7 : DecidableEq.{succ u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), DecidablePred.{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 (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.decidable_mem_ker MonoidHom.decidableMemKerₓ'. -/
 @[to_additive]
 instance decidableMemKer [DecidableEq M] (f : G →* M) : DecidablePred (· ∈ f.ker) := fun x =>
   decidable_of_iff (f x = 1) f.mem_ker
 #align monoid_hom.decidable_mem_ker MonoidHom.decidableMemKer
 #align add_monoid_hom.decidable_mem_ker AddMonoidHom.decidableMemKer
 
-/- warning: monoid_hom.comap_ker -> MonoidHom.comap_ker is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} {P : Type.{u3}} [_inst_4 : Group.{u2} N] [_inst_5 : Group.{u3} P] (g : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (MonoidHom.ker.{u2, u3} N _inst_4 P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) g)) (MonoidHom.ker.{u1, u3} G _inst_1 P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) g f))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u3}} {P : Type.{u2}} [_inst_4 : Group.{u3} N] [_inst_5 : Group.{u2} P] (g : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5)))) (f : MonoidHom.{u1, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u3} G _inst_1 N _inst_4 f (MonoidHom.ker.{u3, u2} N _inst_4 P (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) g)) (MonoidHom.ker.{u1, u2} G _inst_1 P (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) (MonoidHom.comp.{u1, u3, u2} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) g f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.comap_ker MonoidHom.comap_kerₓ'. -/
 @[to_additive]
 theorem comap_ker (g : N →* P) (f : G →* N) : g.ker.comap f = (g.comp f).ker :=
   rfl
 #align monoid_hom.comap_ker MonoidHom.comap_ker
 #align add_monoid_hom.comap_ker AddMonoidHom.comap_ker
 
-/- warning: monoid_hom.comap_bot -> MonoidHom.comap_bot is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.comap_bot MonoidHom.comap_botₓ'. -/
 @[simp, to_additive]
 theorem comap_bot (f : G →* N) : (⊥ : Subgroup N).comap f = f.ker :=
   rfl
 #align monoid_hom.comap_bot MonoidHom.comap_bot
 #align add_monoid_hom.comap_bot AddMonoidHom.comap_bot
 
-/- warning: monoid_hom.ker_restrict -> MonoidHom.ker_restrict is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.ker.{u1, u2} (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.restrict.{u1, u2, u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) N (Subgroup.{u1} G _inst_1) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.setLike.{u1} G _inst_1) (SubgroupClass.to_submonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.setLike.{u1} G _inst_1) (Subgroup.subgroupClass.{u1} G _inst_1)) f K)) (Subgroup.subgroupOf.{u1} G _inst_1 (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)) (Subgroup.toGroup.{u2} G _inst_1 K)) (MonoidHom.ker.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)) (Subgroup.toGroup.{u2} G _inst_1 K) N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.restrict.{u2, u1, u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) N (Subgroup.{u2} G _inst_1) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (SubgroupClass.toSubmonoidClass.{u2, u2} (Subgroup.{u2} G _inst_1) G (Group.toDivInvMonoid.{u2} G _inst_1) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u2} G _inst_1)) f K)) (Subgroup.subgroupOf.{u2} G _inst_1 (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_restrict MonoidHom.ker_restrictₓ'. -/
 @[simp, to_additive]
 theorem ker_restrict (f : G →* N) : (f.restrict K).ker = f.ker.subgroupOf K :=
   rfl
 #align monoid_hom.ker_restrict MonoidHom.ker_restrict
 #align add_monoid_hom.ker_restrict AddMonoidHom.ker_restrict
 
-/- warning: monoid_hom.ker_cod_restrict -> MonoidHom.ker_codRestrict is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.Mem.{u2, u3} N S (SetLike.hasMem.{u3, u2} S N _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (coeSort.{succ u3, succ (succ u2)} S Type.{u2} (SetLike.hasCoeToSort.{u3, u2} S N _inst_7) s) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrictₓ'. -/
 @[simp, to_additive]
 theorem ker_codRestrict {S} [SetLike S N] [SubmonoidClass S N] (f : G →* N) (s : S)
     (h : ∀ x, f x ∈ s) : (f.codRestrict s h).ker = f.ker :=
@@ -4483,48 +2875,24 @@ theorem ker_codRestrict {S} [SetLike S N] [SubmonoidClass S N] (f : G →* N) (s
 #align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrict
 #align add_monoid_hom.ker_cod_restrict AddMonoidHom.ker_codRestrict
 
-/- warning: monoid_hom.ker_range_restrict -> MonoidHom.ker_rangeRestrict is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_range_restrict MonoidHom.ker_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem ker_rangeRestrict (f : G →* N) : ker (rangeRestrict f) = ker f :=
   ker_codRestrict _ _ _
 #align monoid_hom.ker_range_restrict MonoidHom.ker_rangeRestrict
 #align add_monoid_hom.ker_range_restrict AddMonoidHom.ker_rangeRestrict
 
-/- warning: monoid_hom.ker_one -> MonoidHom.ker_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M], Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 (OfNat.ofNat.{max u2 u1} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) 1 (OfNat.mk.{max u2 u1} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) 1 (One.one.{max u2 u1} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (MonoidHom.hasOne.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6))))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M], Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 (OfNat.ofNat.{max u2 u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) 1 (One.toOfNat1.{max u2 u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) (instOneMonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6)))) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_one MonoidHom.ker_oneₓ'. -/
 @[simp, to_additive]
 theorem ker_one : (1 : G →* M).ker = ⊤ :=
   SetLike.ext fun x => eq_self_iff_true _
 #align monoid_hom.ker_one MonoidHom.ker_one
 #align add_monoid_hom.ker_zero AddMonoidHom.ker_zero
 
-/- warning: monoid_hom.ker_id -> MonoidHom.ker_id 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) (MonoidHom.ker.{u1, u1} G _inst_1 G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.id.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{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) (MonoidHom.ker.{u1, u1} G _inst_1 G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.id.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_id MonoidHom.ker_idₓ'. -/
 @[simp, to_additive]
 theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
   rfl
 #align monoid_hom.ker_id MonoidHom.ker_id
 #align add_monoid_hom.ker_id AddMonoidHom.ker_id
 
-/- warning: monoid_hom.ker_eq_bot_iff -> MonoidHom.ker_eq_bot_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Function.Injective.{succ u1, succ u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
   ⟨fun h x y hxy => by rwa [eq_iff, h, mem_bot, inv_mul_eq_one, eq_comm] at hxy, fun h =>
@@ -4532,36 +2900,18 @@ theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
 #align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iff
 #align add_monoid_hom.ker_eq_bot_iff AddMonoidHom.ker_eq_bot_iff
 
-/- warning: subgroup.ker_subtype -> Subgroup.ker_subtype is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 H)) (Bot.bot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasBot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 H)) (Bot.bot.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instBotSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.ker_subtype Subgroup.ker_subtypeₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.ker_subtype (H : Subgroup G) : H.Subtype.ker = ⊥ :=
   H.Subtype.ker_eq_bot_iff.mpr Subtype.coe_injective
 #align subgroup.ker_subtype Subgroup.ker_subtype
 #align add_subgroup.ker_subtype AddSubgroup.ker_subtype
 
-/- warning: subgroup.ker_inclusion -> Subgroup.ker_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Subgroup.inclusion.{u1} G _inst_1 H K h)) (Bot.bot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasBot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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))))) H K), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (Subgroup.inclusion.{u1} G _inst_1 H K h)) (Bot.bot.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instBotSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.ker_inclusion Subgroup.ker_inclusionₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.ker_inclusion {H K : Subgroup G} (h : H ≤ K) : (inclusion h).ker = ⊥ :=
   (inclusion h).ker_eq_bot_iff.mpr (Set.inclusion_injective h)
 #align subgroup.ker_inclusion Subgroup.ker_inclusion
 #align add_subgroup.ker_inclusion AddSubgroup.ker_inclusion
 
-/- warning: monoid_hom.prod_map_comap_prod -> MonoidHom.prodMap_comap_prod is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {G' : Type.{u3}} {N' : Type.{u4}} [_inst_7 : Group.{u3} G'] [_inst_8 : Group.{u4} N'] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : MonoidHom.{u3, u4} G' N' (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8)))) (S : Subgroup.{u2} N _inst_4) (S' : Subgroup.{u4} N' _inst_8), Eq.{succ (max u1 u3)} (Subgroup.{max u1 u3} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7)) (Subgroup.comap.{max u1 u3, max u2 u4} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7) (Prod.{u2, u4} N N') (Prod.group.{u2, u4} N N' _inst_4 _inst_8) (MonoidHom.prodMap.{u1, u3, u2, u4} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) N N' (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8))) f g) (Subgroup.prod.{u2, u4} N _inst_4 N' _inst_8 S S')) (Subgroup.prod.{u1, u3} G _inst_1 G' _inst_7 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f S) (Subgroup.comap.{u3, u4} G' _inst_7 N' _inst_8 g S'))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {G' : Type.{u4}} {N' : Type.{u3}} [_inst_7 : Group.{u4} G'] [_inst_8 : Group.{u3} N'] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : MonoidHom.{u4, u3} G' N' (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8)))) (S : Subgroup.{u1} N _inst_4) (S' : Subgroup.{u3} N' _inst_8), Eq.{max (succ u2) (succ u4)} (Subgroup.{max u2 u4} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7)) (Subgroup.comap.{max u2 u4, max u1 u3} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7) (Prod.{u1, u3} N N') (Prod.instGroupProd.{u1, u3} N N' _inst_4 _inst_8) (MonoidHom.prodMap.{u2, u4, u1, u3} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) N N' (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8))) f g) (Subgroup.prod.{u1, u3} N _inst_4 N' _inst_8 S S')) (Subgroup.prod.{u2, u4} G _inst_1 G' _inst_7 (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f S) (Subgroup.comap.{u4, u3} G' _inst_7 N' _inst_8 g S'))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.prod_map_comap_prod MonoidHom.prodMap_comap_prodₓ'. -/
 @[to_additive]
 theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N)
     (g : G' →* N') (S : Subgroup N) (S' : Subgroup N') :
@@ -4570,12 +2920,6 @@ theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f
 #align monoid_hom.prod_map_comap_prod MonoidHom.prodMap_comap_prod
 #align add_monoid_hom.sum_map_comap_sum AddMonoidHom.sumMap_comap_sum
 
-/- warning: monoid_hom.ker_prod_map -> MonoidHom.ker_prodMap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {G' : Type.{u3}} {N' : Type.{u4}} [_inst_7 : Group.{u3} G'] [_inst_8 : Group.{u4} N'] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : MonoidHom.{u3, u4} G' N' (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8)))), Eq.{succ (max u1 u3)} (Subgroup.{max u1 u3} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7)) (MonoidHom.ker.{max u1 u3, max u2 u4} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7) (Prod.{u2, u4} N N') (Prod.mulOneClass.{u2, u4} N N' (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8)))) (MonoidHom.prodMap.{u1, u3, u2, u4} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) N N' (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8))) f g)) (Subgroup.prod.{u1, u3} G _inst_1 G' _inst_7 (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (MonoidHom.ker.{u3, u4} G' _inst_7 N' (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8))) g))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {G' : Type.{u4}} {N' : Type.{u3}} [_inst_7 : Group.{u4} G'] [_inst_8 : Group.{u3} N'] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : MonoidHom.{u4, u3} G' N' (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8)))), Eq.{max (succ u2) (succ u4)} (Subgroup.{max u2 u4} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7)) (MonoidHom.ker.{max u2 u4, max u1 u3} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7) (Prod.{u1, u3} N N') (Prod.instMulOneClassProd.{u1, u3} N N' (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8)))) (MonoidHom.prodMap.{u2, u4, u1, u3} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) N N' (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8))) f g)) (Subgroup.prod.{u2, u4} G _inst_1 G' _inst_7 (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) (MonoidHom.ker.{u4, u3} G' _inst_7 N' (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8))) g))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_prod_map MonoidHom.ker_prodMapₓ'. -/
 @[to_additive]
 theorem ker_prodMap {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N) (g : G' →* N') :
     (prodMap f g).ker = f.ker.Prod g.ker := by
@@ -4607,24 +2951,12 @@ def eqLocus (f g : G →* M) : Subgroup G :=
 #align add_monoid_hom.eq_locus AddMonoidHom.eqLocus
 -/
 
-/- warning: monoid_hom.eq_locus_same -> MonoidHom.eqLocus_same is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.eqLocus.{u1, u2} G _inst_1 N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)) f f) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.eqLocus.{u2, u1} G _inst_1 N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)) f f) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_locus_same MonoidHom.eqLocus_sameₓ'. -/
 @[simp, to_additive]
 theorem eqLocus_same (f : G →* N) : f.eqLocus f = ⊤ :=
   SetLike.ext fun _ => eq_self_iff_true _
 #align monoid_hom.eq_locus_same MonoidHom.eqLocus_same
 #align add_monoid_hom.eq_locus_same AddMonoidHom.eqLocus_same
 
-/- warning: monoid_hom.eq_on_closure -> MonoidHom.eqOn_closure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {s : Set.{u1} G}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_on_closure MonoidHom.eqOn_closureₓ'. -/
 /-- If two monoid homomorphisms are equal on a set, then they are equal on its subgroup closure. -/
 @[to_additive
       "If two monoid homomorphisms are equal on a set, then they are equal on its subgroup\nclosure."]
@@ -4633,24 +2965,12 @@ theorem eqOn_closure {f g : G →* M} {s : Set G} (h : Set.EqOn f g s) : Set.EqO
 #align monoid_hom.eq_on_closure MonoidHom.eqOn_closure
 #align add_monoid_hom.eq_on_closure AddMonoidHom.eqOn_closure
 
-/- warning: monoid_hom.eq_of_eq_on_top -> MonoidHom.eq_of_eqOn_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
-Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_topₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) : f = g :=
   ext fun x => h trivial
 #align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_top
 #align add_monoid_hom.eq_of_eq_on_top AddMonoidHom.eq_of_eqOn_top
 
-/- warning: monoid_hom.eq_of_eq_on_dense -> MonoidHom.eq_of_eqOn_dense is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {s : Set.{u1} G}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 s) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) -> (forall {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_dense MonoidHom.eq_of_eqOn_denseₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_dense {s : Set G} (hs : closure s = ⊤) {f g : G →* M} (h : s.EqOn f g) : f = g :=
   eq_of_eqOn_top <| hs ▸ eqOn_closure h
@@ -4659,24 +2979,12 @@ theorem eq_of_eqOn_dense {s : Set G} (hs : closure s = ⊤) {f g : G →* M} (h
 
 end EqLocus
 
-/- warning: monoid_hom.closure_preimage_le -> MonoidHom.closure_preimage_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u2} N), 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)))) (Subgroup.closure.{u1} G _inst_1 (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} N _inst_4 s))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_leₓ'. -/
 @[to_additive]
 theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) ≤ (closure s).comap f :=
   (closure_le _).2 fun x hx => by rw [SetLike.mem_coe, mem_comap] <;> exact subset_closure hx
 #align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_le
 #align add_monoid_hom.closure_preimage_le AddMonoidHom.closure_preimage_le
 
-/- warning: monoid_hom.map_closure -> MonoidHom.map_closure is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u1} G), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.closure.{u2} N _inst_4 (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_closure MonoidHom.map_closureₓ'. -/
 /-- The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup
 generated by the image of the set. -/
 @[to_additive
@@ -4693,12 +3001,6 @@ namespace Subgroup
 
 variable {N : Type _} [Group N] (H : Subgroup G)
 
-/- warning: subgroup.normal.map -> Subgroup.Normal.map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Subgroup.Normal.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal.map Subgroup.Normal.mapₓ'. -/
 @[to_additive]
 theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function.Surjective f) :
     (H.map f).Normal :=
@@ -4709,24 +3011,12 @@ theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function
 #align subgroup.normal.map Subgroup.Normal.map
 #align add_subgroup.normal.map AddSubgroup.Normal.map
 
-/- warning: subgroup.map_eq_bot_iff -> Subgroup.map_eq_bot_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (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)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff Subgroup.map_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem map_eq_bot_iff {f : G →* N} : H.map f = ⊥ ↔ H ≤ f.ker :=
   (gc_map_comap f).l_eq_bot
 #align subgroup.map_eq_bot_iff Subgroup.map_eq_bot_iff
 #align add_subgroup.map_eq_bot_iff AddSubgroup.map_eq_bot_iff
 
-/- warning: subgroup.map_eq_bot_iff_of_injective -> Subgroup.map_eq_bot_iff_of_injective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff_of_injective Subgroup.map_eq_bot_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_eq_bot_iff_of_injective {f : G →* N} (hf : Function.Injective f) :
     H.map f = ⊥ ↔ H = ⊥ := by rw [map_eq_bot_iff, f.ker_eq_bot_iff.mpr hf, le_bot_iff]
@@ -4741,72 +3031,36 @@ open MonoidHom
 
 variable {N : Type _} [Group N] (f : G →* N)
 
-/- warning: subgroup.map_le_range -> Subgroup.map_le_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_le_range Subgroup.map_le_rangeₓ'. -/
 @[to_additive]
 theorem map_le_range (H : Subgroup G) : map f H ≤ f.range :=
   (range_eq_map f).symm ▸ map_mono le_top
 #align subgroup.map_le_range Subgroup.map_le_range
 #align add_subgroup.map_le_range AddSubgroup.map_le_range
 
-/- warning: subgroup.map_subtype_le -> Subgroup.map_subtype_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} (K : 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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)), 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)))) (Subgroup.map.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H) K) H
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} (K : 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)), 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))))) (Subgroup.map.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H) K) H
-Case conversion may be inaccurate. Consider using '#align subgroup.map_subtype_le Subgroup.map_subtype_leₓ'. -/
 @[to_additive]
 theorem map_subtype_le {H : Subgroup G} (K : Subgroup H) : K.map H.Subtype ≤ H :=
   (K.map_le_range H.Subtype).trans (le_of_eq H.subtype_range)
 #align subgroup.map_subtype_le Subgroup.map_subtype_le
 #align add_subgroup.map_subtype_le AddSubgroup.map_subtype_le
 
-/- warning: subgroup.ker_le_comap -> Subgroup.ker_le_comap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), 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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), 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))))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)
-Case conversion may be inaccurate. Consider using '#align subgroup.ker_le_comap Subgroup.ker_le_comapₓ'. -/
 @[to_additive]
 theorem ker_le_comap (H : Subgroup N) : f.ker ≤ comap f H :=
   comap_bot f ▸ comap_mono bot_le
 #align subgroup.ker_le_comap Subgroup.ker_le_comap
 #align add_subgroup.ker_le_comap AddSubgroup.ker_le_comap
 
-/- warning: subgroup.map_comap_le -> Subgroup.map_comap_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H
-Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_le Subgroup.map_comap_leₓ'. -/
 @[to_additive]
 theorem map_comap_le (H : Subgroup N) : map f (comap f H) ≤ H :=
   (gc_map_comap f).l_u_le _
 #align subgroup.map_comap_le Subgroup.map_comap_le
 #align add_subgroup.map_comap_le AddSubgroup.map_comap_le
 
-/- warning: subgroup.le_comap_map -> Subgroup.le_comap_map is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), 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)))) H (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))
-Case conversion may be inaccurate. Consider using '#align subgroup.le_comap_map Subgroup.le_comap_mapₓ'. -/
 @[to_additive]
 theorem le_comap_map (H : Subgroup G) : H ≤ comap f (map f H) :=
   (gc_map_comap f).le_u_l _
 #align subgroup.le_comap_map Subgroup.le_comap_map
 #align add_subgroup.le_comap_map AddSubgroup.le_comap_map
 
-/- warning: subgroup.map_comap_eq -> Subgroup.map_comap_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instInfSubgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq Subgroup.map_comap_eqₓ'. -/
 @[to_additive]
 theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
   SetLike.ext' <| by
@@ -4814,12 +3068,6 @@ theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
 #align subgroup.map_comap_eq Subgroup.map_comap_eq
 #align add_subgroup.map_comap_eq AddSubgroup.map_comap_eq
 
-/- warning: subgroup.comap_map_eq -> Subgroup.comap_map_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq Subgroup.comap_map_eqₓ'. -/
 @[to_additive]
 theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
   by
@@ -4831,24 +3079,12 @@ theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
 #align subgroup.comap_map_eq Subgroup.comap_map_eq
 #align add_subgroup.comap_map_eq AddSubgroup.comap_map_eq
 
-/- warning: subgroup.map_comap_eq_self -> Subgroup.map_comap_eq_self is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) H (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self Subgroup.map_comap_eq_selfₓ'. -/
 @[to_additive]
 theorem map_comap_eq_self {f : G →* N} {H : Subgroup N} (h : H ≤ f.range) : map f (comap f H) = H :=
   by rwa [map_comap_eq, inf_eq_right]
 #align subgroup.map_comap_eq_self Subgroup.map_comap_eq_self
 #align add_subgroup.map_comap_eq_self AddSubgroup.map_comap_eq_self
 
-/- warning: subgroup.map_comap_eq_self_of_surjective -> Subgroup.map_comap_eq_self_of_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjectiveₓ'. -/
 @[to_additive]
 theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective f) (H : Subgroup N) :
     map f (comap f H) = H :=
@@ -4856,12 +3092,6 @@ theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective
 #align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjective
 #align add_subgroup.map_comap_eq_self_of_surjective AddSubgroup.map_comap_eq_self_of_surjective
 
-/- warning: subgroup.comap_le_comap_of_le_range -> Subgroup.comap_le_comap_of_le_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_le_range Subgroup.comap_le_comap_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤ f.range) :
     K.comap f ≤ L.comap f ↔ K ≤ L :=
@@ -4869,12 +3099,6 @@ theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤
 #align subgroup.comap_le_comap_of_le_range Subgroup.comap_le_comap_of_le_range
 #align add_subgroup.comap_le_comap_of_le_range AddSubgroup.comap_le_comap_of_le_range
 
-/- warning: subgroup.comap_le_comap_of_surjective -> Subgroup.comap_le_comap_of_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
     K.comap f ≤ L.comap f ↔ K ≤ L :=
@@ -4882,48 +3106,24 @@ theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 #align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjective
 #align add_subgroup.comap_le_comap_of_surjective AddSubgroup.comap_le_comap_of_surjective
 
-/- warning: subgroup.comap_lt_comap_of_surjective -> Subgroup.comap_lt_comap_of_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (LT.lt.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLt.{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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LT.lt.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLt.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
     K.comap f < L.comap f ↔ K < L := by simp_rw [lt_iff_le_not_le, comap_le_comap_of_surjective hf]
 #align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjective
 #align add_subgroup.comap_lt_comap_of_surjective AddSubgroup.comap_lt_comap_of_surjective
 
-/- warning: subgroup.comap_injective -> Subgroup.comap_injective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} N _inst_4) (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective Subgroup.comap_injectiveₓ'. -/
 @[to_additive]
 theorem comap_injective {f : G →* N} (h : Function.Surjective f) : Function.Injective (comap f) :=
   fun K L => by simp only [le_antisymm_iff, comap_le_comap_of_surjective h, imp_self]
 #align subgroup.comap_injective Subgroup.comap_injective
 #align add_subgroup.comap_injective AddSubgroup.comap_injective
 
-/- warning: subgroup.comap_map_eq_self -> Subgroup.comap_map_eq_self is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H) -> (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self Subgroup.comap_map_eq_selfₓ'. -/
 @[to_additive]
 theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) : comap f (map f H) = H :=
   by rwa [comap_map_eq, sup_eq_left]
 #align subgroup.comap_map_eq_self Subgroup.comap_map_eq_self
 #align add_subgroup.comap_map_eq_self AddSubgroup.comap_map_eq_self
 
-/- warning: subgroup.comap_map_eq_self_of_injective -> Subgroup.comap_map_eq_self_of_injective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injectiveₓ'. -/
 @[to_additive]
 theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
     comap f (map f H) = H :=
@@ -4931,24 +3131,12 @@ theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f)
 #align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injective
 #align add_subgroup.comap_map_eq_self_of_injective AddSubgroup.comap_map_eq_self_of_injective
 
-/- warning: subgroup.map_le_map_iff -> Subgroup.map_le_map_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff Subgroup.map_le_map_iffₓ'. -/
 @[to_additive]
 theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f ↔ H ≤ K ⊔ f.ker := by
   rw [map_le_iff_le_comap, comap_map_eq]
 #align subgroup.map_le_map_iff Subgroup.map_le_map_iff
 #align add_subgroup.map_le_map_iff AddSubgroup.map_le_map_iff
 
-/- warning: subgroup.map_le_map_iff' -> Subgroup.map_le_map_iff' is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff' Subgroup.map_le_map_iff'ₓ'. -/
 @[to_additive]
 theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
     H.map f ≤ K.map f ↔ H ⊔ f.ker ≤ K ⊔ f.ker := by
@@ -4956,48 +3144,24 @@ theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
 #align subgroup.map_le_map_iff' Subgroup.map_le_map_iff'
 #align add_subgroup.map_le_map_iff' AddSubgroup.map_le_map_iff'
 
-/- warning: subgroup.map_eq_map_iff -> Subgroup.map_eq_map_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_map_iff Subgroup.map_eq_map_iffₓ'. -/
 @[to_additive]
 theorem map_eq_map_iff {f : G →* N} {H K : Subgroup G} :
     H.map f = K.map f ↔ H ⊔ f.ker = K ⊔ f.ker := by simp only [le_antisymm_iff, map_le_map_iff']
 #align subgroup.map_eq_map_iff Subgroup.map_eq_map_iff
 #align add_subgroup.map_eq_map_iff AddSubgroup.map_eq_map_iff
 
-/- warning: subgroup.map_eq_range_iff -> Subgroup.map_eq_range_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Codisjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderTop.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Codisjoint.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) (BoundedOrder.toOrderTop.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (CompleteLattice.toBoundedOrder.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_range_iff Subgroup.map_eq_range_iffₓ'. -/
 @[to_additive]
 theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} : H.map f = f.range ↔ Codisjoint H f.ker :=
   by rw [f.range_eq_map, map_eq_map_iff, codisjoint_iff, top_sup_eq]
 #align subgroup.map_eq_range_iff Subgroup.map_eq_range_iff
 #align add_subgroup.map_eq_range_iff AddSubgroup.map_eq_range_iff
 
-/- warning: subgroup.map_le_map_iff_of_injective -> Subgroup.map_le_map_iff_of_injective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H K))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
     H.map f ≤ K.map f ↔ H ≤ K := by rw [map_le_iff_le_comap, comap_map_eq_self_of_injective hf]
 #align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injective
 #align add_subgroup.map_le_map_iff_of_injective AddSubgroup.map_le_map_iff_of_injective
 
-/- warning: subgroup.map_subtype_le_map_subtype -> Subgroup.map_subtype_le_map_subtype is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {G' : Subgroup.{u1} G _inst_1} {H : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')} {K : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')}, Iff (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)))) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') H) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') K)) (LE.le.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (Preorder.toHasLe.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (PartialOrder.toPreorder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (SetLike.partialOrder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (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)) G') (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)) G') (Subgroup.toGroup.{u1} G _inst_1 G'))))) H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {G' : Subgroup.{u1} G _inst_1} {H : 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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')} {K : 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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')}, Iff (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))))) (Subgroup.map.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') H) (Subgroup.map.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') K)) (LE.le.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (Preorder.toLE.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (PartialOrder.toPreorder.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (CompleteSemilatticeInf.toPartialOrder.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (CompleteLattice.toCompleteSemilatticeInf.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (Subgroup.instCompleteLatticeSubgroup.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')))))) H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_subtype_le_map_subtype Subgroup.map_subtype_le_map_subtypeₓ'. -/
 @[simp, to_additive]
 theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
     H.map G'.Subtype ≤ K.map G'.Subtype ↔ H ≤ K :=
@@ -5005,21 +3169,12 @@ theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
 #align subgroup.map_subtype_le_map_subtype Subgroup.map_subtype_le_map_subtype
 #align add_subgroup.map_subtype_le_map_subtype AddSubgroup.map_subtype_le_map_subtype
 
-/- warning: subgroup.map_injective -> Subgroup.map_injective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} G _inst_1) (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_injective Subgroup.map_injectiveₓ'. -/
 @[to_additive]
 theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) :=
   Function.LeftInverse.injective <| comap_map_eq_self_of_injective h
 #align subgroup.map_injective Subgroup.map_injective
 #align add_subgroup.map_injective AddSubgroup.map_injective
 
-/- warning: subgroup.map_eq_comap_of_inverse -> Subgroup.map_eq_comap_of_inverse is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverseₓ'. -/
 @[to_additive]
 theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
     (hr : Function.RightInverse g f) (H : Subgroup G) : map f H = comap g H :=
@@ -5027,12 +3182,6 @@ theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.Lef
 #align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverse
 #align add_subgroup.map_eq_comap_of_inverse AddSubgroup.map_eq_comap_of_inverse
 
-/- warning: subgroup.map_injective_of_ker_le -> Subgroup.map_injective_of_ker_le is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H) -> (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) -> (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_leₓ'. -/
 /-- Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`. -/
 @[to_additive "Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`."]
 theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
@@ -5043,9 +3192,6 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
 #align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_le
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
 
-/- warning: subgroup.closure_preimage_eq_top -> Subgroup.closure_preimage_eq_top is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_topₓ'. -/
 @[to_additive]
 theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹' s) = ⊤ :=
   by
@@ -5057,12 +3203,6 @@ theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹
 #align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_top
 #align add_subgroup.closure_preimage_eq_top AddSubgroup.closure_preimage_eq_top
 
-/- warning: subgroup.comap_sup_eq_of_le_range -> Subgroup.comap_sup_eq_of_le_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq_of_le_range Subgroup.comap_sup_eq_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range) :
     comap f H ⊔ comap f K = comap f (H ⊔ K) :=
@@ -5073,12 +3213,6 @@ theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K
 #align subgroup.comap_sup_eq_of_le_range Subgroup.comap_sup_eq_of_le_range
 #align add_subgroup.comap_sup_eq_of_le_range AddSubgroup.comap_sup_eq_of_le_range
 
-/- warning: subgroup.comap_sup_eq -> Subgroup.comap_sup_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq Subgroup.comap_sup_eqₓ'. -/
 @[to_additive]
 theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
     comap f H ⊔ comap f K = comap f (H ⊔ K) :=
@@ -5087,12 +3221,6 @@ theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
 #align subgroup.comap_sup_eq Subgroup.comap_sup_eq
 #align add_subgroup.comap_sup_eq AddSubgroup.comap_sup_eq
 
-/- warning: subgroup.sup_subgroup_of_eq -> Subgroup.sup_subgroupOf_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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)))) H L) -> (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)))) K L) -> (Eq.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Sup.sup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.completeLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K) L))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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))))) H L) -> (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))))) K L) -> (Eq.{succ 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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Sup.sup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.instCompleteLatticeSubgroup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K) L))
-Case conversion may be inaccurate. Consider using '#align subgroup.sup_subgroup_of_eq Subgroup.sup_subgroupOf_eqₓ'. -/
 @[to_additive]
 theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
     H.subgroupOf L ⊔ K.subgroupOf L = (H ⊔ K).subgroupOf L :=
@@ -5100,9 +3228,6 @@ theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
 #align subgroup.sup_subgroup_of_eq Subgroup.sup_subgroupOf_eq
 #align add_subgroup.sup_add_subgroup_of_eq AddSubgroup.sup_addSubgroupOf_eq
 
-/- warning: subgroup.codisjoint_subgroup_of_sup -> Subgroup.codisjoint_subgroupOf_sup is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_supₓ'. -/
 @[to_additive]
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
     Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) := by
@@ -5110,12 +3235,6 @@ theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
 #align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_sup
 #align add_subgroup.codisjoint_add_subgroup_of_sup AddSubgroup.codisjoint_addSubgroupOf_sup
 
-/- warning: subgroup.equiv_map_of_injective -> Subgroup.equivMapOfInjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjectiveₓ'. -/
 /-- A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
 use `mul_equiv.subgroup_map` for better definitional equalities. -/
 @[to_additive
@@ -5126,9 +3245,6 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
 #align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjective
 #align add_subgroup.equiv_map_of_injective AddSubgroup.equivMapOfInjective
 
-/- warning: subgroup.coe_equiv_map_of_injective_apply -> Subgroup.coe_equivMapOfInjective_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
     (h : H) : (equivMapOfInjective H f hf h : N) = f h :=
@@ -5136,12 +3252,6 @@ theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Func
 #align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_apply
 #align add_subgroup.coe_equiv_map_of_injective_apply AddSubgroup.coe_equivMapOfInjective_apply
 
-/- warning: subgroup.comap_normalizer_eq_of_surjective -> Subgroup.comap_normalizer_eq_of_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Surjective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjectiveₓ'. -/
 /-- The preimage of the normalizer is equal to the normalizer of the preimage of a surjective
   function. -/
 @[to_additive
@@ -5158,12 +3268,6 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
 #align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjective
 #align add_subgroup.comap_normalizer_eq_of_surjective AddSubgroup.comap_normalizer_eq_of_surjective
 
-/- warning: subgroup.comap_normalizer_eq_of_injective_of_le_range -> Subgroup.comap_normalizer_eq_of_injective_of_le_range is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H : Subgroup G)
     {f : N →* G} (hf : Function.Injective f) (h : H.normalizer ≤ f.range) :
@@ -5179,12 +3283,6 @@ theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H :
 #align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_range
 #align add_subgroup.comap_normalizer_eq_of_injective_of_le_range AddSubgroup.comap_normalizer_eq_of_injective_of_le_range
 
-/- warning: subgroup.subgroup_of_normalizer_eq -> Subgroup.subgroupOf_normalizer_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1}, (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) N) -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.subgroupOf.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H) N) (Subgroup.normalizer.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Subgroup.subgroupOf.{u1} G _inst_1 H N)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1}, (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) N) -> (Eq.{succ 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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.subgroupOf.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H) N) (Subgroup.normalizer.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N) (Subgroup.subgroupOf.{u1} G _inst_1 H N)))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_normalizer_eq Subgroup.subgroupOf_normalizer_eqₓ'. -/
 @[to_additive]
 theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
     H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer :=
@@ -5195,12 +3293,6 @@ theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
 #align subgroup.subgroup_of_normalizer_eq Subgroup.subgroupOf_normalizer_eq
 #align add_subgroup.add_subgroup_of_normalizer_eq AddSubgroup.addSubgroupOf_normalizer_eq
 
-/- warning: subgroup.map_equiv_normalizer_eq -> Subgroup.map_equiv_normalizer_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_equiv_normalizer_eq Subgroup.map_equiv_normalizer_eqₓ'. -/
 /-- The image of the normalizer is equal to the normalizer of the image of an isomorphism. -/
 @[to_additive
       "The image of the normalizer is equal to the normalizer of the image of an\nisomorphism."]
@@ -5214,12 +3306,6 @@ theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
 #align subgroup.map_equiv_normalizer_eq Subgroup.map_equiv_normalizer_eq
 #align add_subgroup.map_equiv_normalizer_eq AddSubgroup.map_equiv_normalizer_eq
 
-/- warning: subgroup.map_normalizer_eq_of_bijective -> Subgroup.map_normalizer_eq_of_bijective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Bijective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_normalizer_eq_of_bijective Subgroup.map_normalizer_eq_of_bijectiveₓ'. -/
 /-- The image of the normalizer is equal to the normalizer of the image of a bijective
   function. -/
 @[to_additive
@@ -5238,12 +3324,6 @@ variable {G₁ G₂ G₃ : Type _} [Group G₁] [Group G₂] [Group G₃]
 
 variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 
-/- warning: monoid_hom.lift_of_right_inverse_aux -> MonoidHom.liftOfRightInverseAux is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
-but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAuxₓ'. -/
 /-- Auxiliary definition used to define `lift_of_right_inverse` -/
 @[to_additive "Auxiliary definition used to define `lift_of_right_inverse`"]
 def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃) (hg : f.ker ≤ g.ker) :
@@ -5259,9 +3339,6 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
 #align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAux
 #align add_monoid_hom.lift_of_right_inverse_aux AddMonoidHom.liftOfRightInverseAux
 
-/- warning: monoid_hom.lift_of_right_inverse_aux_comp_apply -> MonoidHom.liftOfRightInverseAux_comp_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
     (hg : f.ker ≤ g.ker) (x : G₁) : (f.liftOfRightInverseAux f_inv hf g hg) (f x) = g x :=
@@ -5274,12 +3351,6 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
 #align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_apply
 #align add_monoid_hom.lift_of_right_inverse_aux_comp_apply AddMonoidHom.liftOfRightInverseAux_comp_apply
 
-/- warning: monoid_hom.lift_of_right_inverse -> MonoidHom.liftOfRightInverse is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
-but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverseₓ'. -/
 /-- `lift_of_right_inverse f hf g hg` is the unique group homomorphism `φ`
 
 * such that `φ.comp f = g` (`monoid_hom.lift_of_right_inverse_comp`),
@@ -5314,12 +3385,6 @@ def liftOfRightInverse (hf : Function.RightInverse f_inv f) :
 #align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverse
 #align add_monoid_hom.lift_of_right_inverse AddMonoidHom.liftOfRightInverse
 
-/- warning: monoid_hom.lift_of_surjective -> MonoidHom.liftOfSurjective is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
-but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjectiveₓ'. -/
 /-- A non-computable version of `monoid_hom.lift_of_right_inverse` for when no computable right
 inverse is available, that uses `function.surj_inv`. -/
 @[simp,
@@ -5331,9 +3396,6 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
 #align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjective
 #align add_monoid_hom.lift_of_surjective AddMonoidHom.liftOfSurjective
 
-/- warning: monoid_hom.lift_of_right_inverse_comp_apply -> MonoidHom.liftOfRightInverse_comp_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
     (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) (x : G₁) :
@@ -5342,9 +3404,6 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
 #align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_apply
 #align add_monoid_hom.lift_of_right_inverse_comp_apply AddMonoidHom.liftOfRightInverse_comp_apply
 
-/- warning: monoid_hom.lift_of_right_inverse_comp -> MonoidHom.liftOfRightInverse_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_compₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
     (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) : (f.liftOfRightInverse f_inv hf g).comp f = g :=
@@ -5352,9 +3411,6 @@ theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
 #align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_comp
 #align add_monoid_hom.lift_of_right_inverse_comp AddMonoidHom.liftOfRightInverse_comp
 
-/- warning: monoid_hom.eq_lift_of_right_inverse -> MonoidHom.eq_liftOfRightInverse is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverseₓ'. -/
 @[to_additive]
 theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
     (hg : f.ker ≤ g.ker) (h : G₂ →* G₃) (hh : h.comp f = g) :
@@ -5387,12 +3443,6 @@ instance (priority := 100) Subgroup.normal_comap {H : Subgroup N} [nH : H.Normal
 #align add_subgroup.normal_comap AddSubgroup.normal_comap
 -/
 
-/- warning: subgroup.normal.subgroup_of -> Subgroup.Normal.subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (K : Subgroup.{u1} G _inst_1), Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (K : Subgroup.{u1} G _inst_1), Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal.subgroup_of Subgroup.Normal.subgroupOfₓ'. -/
 -- Here `H.normal` is an explicit argument so we can use dot notation with `subgroup_of`.
 @[to_additive]
 theorem Subgroup.Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgroup G) :
@@ -5401,12 +3451,6 @@ theorem Subgroup.Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgrou
 #align subgroup.normal.subgroup_of Subgroup.Normal.subgroupOf
 #align add_subgroup.normal.add_subgroup_of AddSubgroup.Normal.addSubgroupOf
 
-/- warning: subgroup.normal_subgroup_of -> Subgroup.normal_subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [_inst_5 : Subgroup.Normal.{u1} G _inst_1 N], Subgroup.Normal.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (Subgroup.subgroupOf.{u1} G _inst_1 N H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [_inst_5 : Subgroup.Normal.{u1} G _inst_1 N], Subgroup.Normal.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (Subgroup.subgroupOf.{u1} G _inst_1 N H)
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_subgroup_of Subgroup.normal_subgroupOfₓ'. -/
 @[to_additive]
 instance (priority := 100) Subgroup.normal_subgroupOf {H N : Subgroup G} [N.Normal] :
     (N.subgroupOf H).Normal :=
@@ -5416,12 +3460,6 @@ instance (priority := 100) Subgroup.normal_subgroupOf {H N : Subgroup G} [N.Norm
 
 namespace MonoidHom
 
-/- warning: monoid_hom.subgroup_comap -> MonoidHom.subgroupComap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H' : Subgroup.{u2} G' _inst_2), MonoidHom.{u1, u2} (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H'))))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (Subgroup.toGroup.{u2} G' _inst_2 H'))))
-but is expected to have type
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H' : Subgroup.{u2} G' _inst_2), MonoidHom.{u1, u2} (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 (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H'))) (Subtype.{succ u2} G' (fun (x : G') => Membership.mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u2} G' _inst_2)) x H')) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H'))) (Submonoid.toMulOneClass.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Subgroup.toSubmonoid.{u2} G' _inst_2 H'))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_comap MonoidHom.subgroupComapₓ'. -/
 /-- The `monoid_hom` from the preimage of a subgroup to itself. -/
 @[to_additive "the `add_monoid_hom` from the preimage of an additive subgroup to itself.", simps]
 def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
@@ -5429,12 +3467,6 @@ def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
 #align monoid_hom.subgroup_comap MonoidHom.subgroupComap
 #align add_monoid_hom.add_subgroup_comap AddMonoidHom.addSubgroupComap
 
-/- warning: monoid_hom.subgroup_map -> MonoidHom.subgroupMap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))
-but is expected to have type
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), MonoidHom.{u1, u2} (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 H)) (Subtype.{succ u2} G' (fun (x : G') => Membership.mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Subgroup.toSubmonoid.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map MonoidHom.subgroupMapₓ'. -/
 /-- The `monoid_hom` from a subgroup to its image. -/
 @[to_additive "the `add_monoid_hom` from an additive subgroup to its image", simps]
 def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
@@ -5442,9 +3474,6 @@ def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
 #align monoid_hom.subgroup_map MonoidHom.subgroupMap
 #align add_monoid_hom.add_subgroup_map AddMonoidHom.addSubgroupMap
 
-/- warning: monoid_hom.subgroup_map_surjective -> MonoidHom.subgroupMap_surjective is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjectiveₓ'. -/
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
     Function.Surjective (f.subgroupMap H) :=
@@ -5458,12 +3487,6 @@ namespace MulEquiv
 
 variable {H K : Subgroup G}
 
-/- warning: mul_equiv.subgroup_congr -> MulEquiv.subgroupCongr is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K) -> (MulEquiv.{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)) H) (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)) K) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u1} G _inst_1 K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K) -> (MulEquiv.{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 H)) (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 K)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u1} G _inst_1 K))
-Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_congr MulEquiv.subgroupCongrₓ'. -/
 /-- Makes the identity isomorphism from a proof two subgroups of a multiplicative
     group are equal. -/
 @[to_additive
@@ -5473,9 +3496,6 @@ def subgroupCongr (h : H = K) : H ≃* K :=
 #align mul_equiv.subgroup_congr MulEquiv.subgroupCongr
 #align add_equiv.add_subgroup_congr AddEquiv.addSubgroupCongr
 
-/- warning: mul_equiv.subgroup_map -> MulEquiv.subgroupMap is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map MulEquiv.subgroupMapₓ'. -/
 /-- A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
 use `subgroup.equiv_map_of_injective`. -/
 @[to_additive
@@ -5485,9 +3505,6 @@ def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G')
 #align mul_equiv.subgroup_map MulEquiv.subgroupMap
 #align add_equiv.add_subgroup_map AddEquiv.addSubgroupMap
 
-/- warning: mul_equiv.coe_subgroup_map_apply -> MulEquiv.coe_subgroupMap_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
     ((subgroupMap e H g : H.map (e : G →* G')) : G') = e g :=
@@ -5495,9 +3512,6 @@ theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
 #align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_apply
 #align add_equiv.coe_add_subgroup_map_apply AddEquiv.coe_addSubgroupMap_apply
 
-/- warning: mul_equiv.subgroup_map_symm_apply -> MulEquiv.subgroupMap_symm_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
     (e.subgroupMap H).symm g = ⟨e.symm g, SetLike.mem_coe.1 <| Set.mem_image_equiv.1 g.2⟩ :=
@@ -5509,9 +3523,6 @@ end MulEquiv
 
 namespace Subgroup
 
-/- warning: subgroup.equiv_map_of_injective_coe_mul_equiv -> Subgroup.equivMapOfInjective_coe_mulEquiv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquivₓ'. -/
 @[simp, to_additive]
 theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
     H.equivMapOfInjective (e : G →* G') (EquivLike.injective e) = e.subgroupMap H := by ext; rfl
@@ -5520,12 +3531,6 @@ theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
 
 variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
 
-/- warning: subgroup.mem_sup -> Subgroup.mem_sup is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) => Exists.{succ u1} C (fun (z : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (Exists.{succ u1} C (fun (z : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup Subgroup.mem_supₓ'. -/
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
   ⟨fun h => by
@@ -5543,24 +3548,12 @@ theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
 #align subgroup.mem_sup Subgroup.mem_sup
 #align add_subgroup.mem_sup AddSubgroup.mem_sup
 
-/- warning: subgroup.mem_sup' -> Subgroup.mem_sup' is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) (fun (y : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) => Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) (fun (z : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s))))) y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t))))) z)) x)))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) (fun (y : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) => Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) (fun (z : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) s)) y) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) t)) z)) x)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup' Subgroup.mem_sup'ₓ'. -/
 @[to_additive]
 theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s)(z : t), (y : C) * z = x :=
   mem_sup.trans <| by simp only [SetLike.exists, coe_mk]
 #align subgroup.mem_sup' Subgroup.mem_sup'
 #align add_subgroup.mem_sup' AddSubgroup.mem_sup'
 
-/- warning: subgroup.mem_closure_pair -> Subgroup.mem_closure_pair is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {x : C} {y : C} {z : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z (Subgroup.closure.{u1} C (CommGroup.toGroup.{u1} C _inst_5) (Insert.insert.{u1, u1} C (Set.{u1} C) (Set.hasInsert.{u1} C) x (Singleton.singleton.{u1, u1} C (Set.{u1} C) (Set.hasSingleton.{u1} C) y)))) (Exists.{1} Int (fun (m : Int) => Exists.{1} Int (fun (n : Int) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) x m) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) y n)) z)))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {x : C} {y : C} {z : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z (Subgroup.closure.{u1} C (CommGroup.toGroup.{u1} C _inst_5) (Insert.insert.{u1, u1} C (Set.{u1} C) (Set.instInsertSet.{u1} C) x (Singleton.singleton.{u1, u1} C (Set.{u1} C) (Set.instSingletonSet.{u1} C) y)))) (Exists.{1} Int (fun (m : Int) => Exists.{1} Int (fun (n : Int) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) x m) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) y n)) z)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_closure_pair Subgroup.mem_closure_pairₓ'. -/
 @[to_additive]
 theorem mem_closure_pair {x y z : C} :
     z ∈ closure ({x, y} : Set C) ↔ ∃ m n : ℤ, x ^ m * y ^ n = z :=
@@ -5584,12 +3577,6 @@ namespace Subgroup
 
 section SubgroupNormal
 
-/- warning: subgroup.normal_subgroup_of_iff -> Subgroup.normal_subgroupOf_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (Iff (Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (forall (h : G) (k : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) k K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) k h) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) k)) H)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (Iff (Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (forall (h : G) (k : 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)) h H) -> (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)) k K) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) k h) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) k)) H)))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_subgroup_of_iff Subgroup.normal_subgroupOf_iffₓ'. -/
 @[to_additive]
 theorem normal_subgroupOf_iff {H K : Subgroup G} (hHK : H ≤ K) :
     (H.subgroupOf K).Normal ↔ ∀ h k, h ∈ H → k ∈ K → k * h * k⁻¹ ∈ H :=
@@ -5598,12 +3585,6 @@ theorem normal_subgroupOf_iff {H K : Subgroup G} (hHK : H ≤ K) :
 #align subgroup.normal_subgroup_of_iff Subgroup.normal_subgroupOf_iff
 #align add_subgroup.normal_add_subgroup_of_iff AddSubgroup.normal_addSubgroupOf_iff
 
-/- warning: subgroup.prod_subgroup_of_prod_normal -> Subgroup.prod_subgroupOf_prod_normal is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H₁ : Subgroup.{u1} G _inst_1} {K₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u2} N _inst_4} {K₂ : Subgroup.{u2} N _inst_4} [h₁ : Subgroup.Normal.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K₁)] [h₂ : Subgroup.Normal.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) K₂) (Subgroup.toGroup.{u2} N _inst_4 K₂) (Subgroup.subgroupOf.{u2} N _inst_4 H₂ K₂)], Subgroup.Normal.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂)) (Subgroup.toGroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂)) (Subgroup.subgroupOf.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H₁ H₂) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H₁ : Subgroup.{u1} G _inst_1} {K₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u2} N _inst_4} {K₂ : Subgroup.{u2} N _inst_4} [h₁ : Subgroup.Normal.{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 K₁)) (Subgroup.toGroup.{u1} G _inst_1 K₁) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K₁)] [h₂ : Subgroup.Normal.{u2} (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x K₂)) (Subgroup.toGroup.{u2} N _inst_4 K₂) (Subgroup.subgroupOf.{u2} N _inst_4 H₂ K₂)], Subgroup.Normal.{max u1 u2} (Subtype.{succ (max u1 u2)} (Prod.{u1, u2} G N) (fun (x : Prod.{u1, u2} G N) => Membership.mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} G N) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (SetLike.instMembership.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.instSetLikeSubgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4))) x (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂))) (Subgroup.toGroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂)) (Subgroup.subgroupOf.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H₁ H₂) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂))
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_subgroup_of_prod_normal Subgroup.prod_subgroupOf_prod_normalₓ'. -/
 @[to_additive]
 instance prod_subgroupOf_prod_normal {H₁ K₁ : Subgroup G} {H₂ K₂ : Subgroup N}
     [h₁ : (H₁.subgroupOf K₁).Normal] [h₂ : (H₂.subgroupOf K₂).Normal] :
@@ -5616,12 +3597,6 @@ instance prod_subgroupOf_prod_normal {H₁ K₁ : Subgroup G} {H₂ K₂ : Subgr
 #align subgroup.prod_subgroup_of_prod_normal Subgroup.prod_subgroupOf_prod_normal
 #align add_subgroup.sum_add_subgroup_of_sum_normal AddSubgroup.sum_addSubgroupOf_sum_normal
 
-/- warning: subgroup.prod_normal -> Subgroup.prod_normal is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u2} N _inst_4) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u2} N _inst_4 K], Subgroup.Normal.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u2} N _inst_4) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u2} N _inst_4 K], Subgroup.Normal.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.prod_normal Subgroup.prod_normalₓ'. -/
 @[to_additive]
 instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.Normal] :
     (H.Prod K).Normal
@@ -5631,12 +3606,6 @@ instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.N
 #align subgroup.prod_normal Subgroup.prod_normal
 #align add_subgroup.sum_normal AddSubgroup.sum_normal
 
-/- warning: subgroup.inf_subgroup_of_inf_normal_of_right -> Subgroup.inf_subgroupOf_inf_normal_of_right is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) B' B) -> (forall [hN : Subgroup.Normal.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B') (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) B' B) -> (forall [hN : Subgroup.Normal.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B') (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)))
-Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_rightₓ'. -/
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
     [hN : (B'.subgroupOf B).Normal] : ((A ⊓ B').subgroupOf (A ⊓ B)).Normal :=
@@ -5647,12 +3616,6 @@ theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
 #align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_right
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_right AddSubgroup.inf_addSubgroupOf_inf_normal_of_right
 
-/- warning: subgroup.inf_subgroup_of_inf_normal_of_left -> Subgroup.inf_subgroupOf_inf_normal_of_left is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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)))) A' A) -> (forall [hN : Subgroup.Normal.{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)) A) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A' B) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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))))) A' A) -> (forall [hN : Subgroup.Normal.{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 A)) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A' B) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)))
-Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_leftₓ'. -/
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (hA : A' ≤ A)
     [hN : (A'.subgroupOf A).Normal] : ((A' ⊓ B).subgroupOf (A ⊓ B)).Normal :=
@@ -5663,24 +3626,12 @@ theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (
 #align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_left
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_left AddSubgroup.inf_addSubgroupOf_inf_normal_of_left
 
-/- warning: subgroup.normal_inf_normal -> Subgroup.normal_inf_normal is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H K)
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_inf_normal Subgroup.normal_inf_normalₓ'. -/
 @[to_additive]
 instance normal_inf_normal (H K : Subgroup G) [hH : H.Normal] [hK : K.Normal] : (H ⊓ K).Normal :=
   ⟨fun n hmem g => ⟨hH.conj_mem n hmem.1 g, hK.conj_mem n hmem.2 g⟩⟩
 #align subgroup.normal_inf_normal Subgroup.normal_inf_normal
 #align add_subgroup.normal_inf_normal AddSubgroup.normal_inf_normal
 
-/- warning: subgroup.subgroup_of_sup -> Subgroup.subgroupOf_sup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) A B) -> (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)))) A' B) -> (Eq.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) A A') B) (Sup.sup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.completeLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) A B) -> (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))))) A' B) -> (Eq.{succ 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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) A A') B) (Sup.sup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.instCompleteLatticeSubgroup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_sup Subgroup.subgroupOf_supₓ'. -/
 @[to_additive]
 theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
     (A ⊔ A').subgroupOf B = A.subgroupOf B ⊔ A'.subgroupOf B :=
@@ -5693,12 +3644,6 @@ theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
 #align subgroup.subgroup_of_sup Subgroup.subgroupOf_sup
 #align add_subgroup.add_subgroup_of_sup AddSubgroup.addSubgroupOf_sup
 
-/- warning: subgroup.subgroup_normal.mem_comm -> Subgroup.SubgroupNormal.mem_comm is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (forall [hN : Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)] {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) b K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (forall [hN : Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)] {a : G} {b : 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)) b K) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
-Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_commₓ'. -/
 @[to_additive]
 theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgroupOf K).Normal]
     {a b : G} (hb : b ∈ K) (h : a * b ∈ H) : b * a ∈ H :=
@@ -5708,12 +3653,6 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
 #align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_comm
 #align add_subgroup.subgroup_normal.mem_comm AddSubgroup.SubgroupNormal.mem_comm
 
-/- warning: subgroup.commute_of_normal_of_disjoint -> Subgroup.commute_of_normal_of_disjoint is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H₁ : Subgroup.{u1} G _inst_1) (H₂ : Subgroup.{u1} G _inst_1), (Subgroup.Normal.{u1} G _inst_1 H₁) -> (Subgroup.Normal.{u1} G _inst_1 H₂) -> (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (forall (x : G) (y : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H₁ : Subgroup.{u1} G _inst_1) (H₂ : Subgroup.{u1} G _inst_1), (Subgroup.Normal.{u1} G _inst_1 H₁) -> (Subgroup.Normal.{u1} G _inst_1 H₂) -> (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) -> (forall (x : G) (y : 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 H₁) -> (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)) y H₂) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))
-Case conversion may be inaccurate. Consider using '#align subgroup.commute_of_normal_of_disjoint Subgroup.commute_of_normal_of_disjointₓ'. -/
 /-- Elements of disjoint, normal subgroups commute. -/
 @[to_additive "Elements of disjoint, normal subgroups commute."]
 theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Normal) (hH₂ : H₂.Normal)
@@ -5732,24 +3671,12 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
 
 end SubgroupNormal
 
-/- warning: subgroup.disjoint_def -> Subgroup.disjoint_def is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {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 H₁) -> (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 H₂) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_def Subgroup.disjoint_defₓ'. -/
 @[to_additive]
 theorem disjoint_def {H₁ H₂ : Subgroup G} : Disjoint H₁ H₂ ↔ ∀ {x : G}, x ∈ H₁ → x ∈ H₂ → x = 1 :=
   disjoint_iff_inf_le.trans <| by simp only [Disjoint, SetLike.le_def, mem_inf, mem_bot, and_imp]
 #align subgroup.disjoint_def Subgroup.disjoint_def
 #align add_subgroup.disjoint_def AddSubgroup.disjoint_def
 
-/- warning: subgroup.disjoint_def' -> Subgroup.disjoint_def' is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G x y) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : 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 H₁) -> (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)) y H₂) -> (Eq.{succ u1} G x y) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_def' Subgroup.disjoint_def'ₓ'. -/
 @[to_additive]
 theorem disjoint_def' {H₁ H₂ : Subgroup G} :
     Disjoint H₁ H₂ ↔ ∀ {x y : G}, x ∈ H₁ → y ∈ H₂ → x = y → x = 1 :=
@@ -5757,12 +3684,6 @@ theorem disjoint_def' {H₁ H₂ : Subgroup G} :
 #align subgroup.disjoint_def' Subgroup.disjoint_def'
 #align add_subgroup.disjoint_def' AddSubgroup.disjoint_def'
 
-/- warning: subgroup.disjoint_iff_mul_eq_one -> Subgroup.disjoint_iff_mul_eq_one is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) -> (And (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Eq.{succ u1} G y (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : 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 H₁) -> (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)) y H₂) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) -> (And (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) (Eq.{succ u1} G y (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))))
-Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_iff_mul_eq_one Subgroup.disjoint_iff_mul_eq_oneₓ'. -/
 @[to_additive]
 theorem disjoint_iff_mul_eq_one {H₁ H₂ : Subgroup G} :
     Disjoint H₁ H₂ ↔ ∀ {x y : G}, x ∈ H₁ → y ∈ H₂ → x * y = 1 → x = 1 ∧ y = 1 :=
@@ -5774,12 +3695,6 @@ theorem disjoint_iff_mul_eq_one {H₁ H₂ : Subgroup G} :
 #align subgroup.disjoint_iff_mul_eq_one Subgroup.disjoint_iff_mul_eq_one
 #align add_subgroup.disjoint_iff_add_eq_zero AddSubgroup.disjoint_iff_add_eq_zero
 
-/- warning: subgroup.mul_injective_of_disjoint -> Subgroup.mul_injective_of_disjoint is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (Function.Injective.{succ u1, succ u1} (Prod.{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)) H₁) (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)) H₂)) G (fun (g : Prod.{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)) H₁) (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)) H₂)) => HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₁) G (HasLiftT.mk.{succ u1, succ 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)) H₁) G (CoeTCₓ.coe.{succ u1, succ 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)) H₁) G (coeBase.{succ u1, succ 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)) H₁) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁))))) (Prod.fst.{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)) H₁) (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)) H₂) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₂) G (HasLiftT.mk.{succ u1, succ 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)) H₂) G (CoeTCₓ.coe.{succ u1, succ 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)) H₂) G (coeBase.{succ u1, succ 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)) H₂) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂))))) (Prod.snd.{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)) H₁) (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)) H₂) g))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) -> (Function.Injective.{succ u1, succ u1} (Prod.{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 H₁)) (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 H₂))) G (fun (g : Prod.{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 H₁)) (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 H₂))) => HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₁)) (Prod.fst.{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 H₁)) (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 H₂)) g)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₂)) (Prod.snd.{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 H₁)) (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 H₂)) g))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mul_injective_of_disjoint Subgroup.mul_injective_of_disjointₓ'. -/
 @[to_additive]
 theorem mul_injective_of_disjoint {H₁ H₂ : Subgroup G} (h : Disjoint H₁ H₂) :
     Function.Injective (fun g => g.1 * g.2 : H₁ × H₂ → G) :=
@@ -5798,12 +3713,6 @@ namespace IsConj
 
 open Subgroup
 
-/- warning: is_conj.normal_closure_eq_top_of -> IsConj.normalClosure_eq_top_of is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Subgroup.{u1} G _inst_1} [hn : Subgroup.Normal.{u1} G _inst_1 N] {g : G} {g' : G} {hg : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g N} {hg' : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g' N}, (IsConj.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g g') -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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)) N) (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)) N)) (Set.hasSingleton.{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)) N)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x N) g hg))) (Top.top.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.hasTop.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)))) -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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)) N) (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)) N)) (Set.hasSingleton.{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)) N)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x N) g' hg'))) (Top.top.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.hasTop.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Subgroup.{u1} G _inst_1} [hn : Subgroup.Normal.{u1} G _inst_1 N] {g : G} {g' : G} {hg : 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)) g N} {hg' : 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)) g' N}, (IsConj.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g g') -> (Eq.{succ 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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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 N)) (Set.{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 N))) (Set.instSingletonSet.{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 N))) (Subtype.mk.{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 N) g hg))) (Top.top.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.instTopSubgroup.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)))) -> (Eq.{succ 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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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 N)) (Set.{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 N))) (Set.instSingletonSet.{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 N))) (Subtype.mk.{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 N) g' hg'))) (Top.top.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.instTopSubgroup.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N))))
-Case conversion may be inaccurate. Consider using '#align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_ofₓ'. -/
 theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg : g ∈ N}
     {hg' : g' ∈ N} (hc : IsConj g g') (ht : normalClosure ({⟨g, hg⟩} : Set N) = ⊤) :
     normalClosure ({⟨g', hg'⟩} : Set N) = ⊤ :=
Diff
@@ -173,12 +173,8 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align zpow_mem zpow_memₓ'. -/
 @[to_additive]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
-  | (n : ℕ) => by
-    rw [zpow_ofNat]
-    exact pow_mem hx n
-  | -[n+1] => by
-    rw [zpow_negSucc]
-    exact inv_mem (pow_mem hx n.succ)
+  | (n : ℕ) => by rw [zpow_ofNat]; exact pow_mem hx n
+  | -[n+1] => by rw [zpow_negSucc]; exact inv_mem (pow_mem hx n.succ)
 #align zpow_mem zpow_mem
 #align zsmul_mem zsmul_mem
 
@@ -208,9 +204,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align exists_inv_mem_iff_exists_mem exists_inv_mem_iff_exists_memₓ'. -/
 @[simp, to_additive]
 theorem exists_inv_mem_iff_exists_mem {P : G → Prop} : (∃ x : G, x ∈ H ∧ P x⁻¹) ↔ ∃ x ∈ H, P x := by
-  constructor <;>
-    · rintro ⟨x, x_in, hx⟩
-      exact ⟨x⁻¹, inv_mem x_in, by simp [hx]⟩
+  constructor <;> · rintro ⟨x, x_in, hx⟩; exact ⟨x⁻¹, inv_mem x_in, by simp [hx]⟩
 #align exists_inv_mem_iff_exists_mem exists_inv_mem_iff_exists_mem
 #align exists_neg_mem_iff_exists_mem exists_neg_mem_iff_exists_mem
 
@@ -426,10 +420,7 @@ def inclusion {H K : S} (h : H ≤ K) : H →* K :=
 <too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_self SubgroupClass.inclusion_selfₓ'. -/
 @[simp, to_additive]
-theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
-  by
-  cases x
-  rfl
+theorem inclusion_self (x : H) : inclusion le_rfl x = x := by cases x; rfl
 #align subgroup_class.inclusion_self SubgroupClass.inclusion_self
 #align add_subgroup_class.inclusion_self AddSubgroupClass.inclusion_self
 
@@ -446,10 +437,8 @@ theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx
 <too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_right SubgroupClass.inclusion_rightₓ'. -/
 @[to_additive]
-theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x :=
-  by
-  cases x
-  rfl
+theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x := by
+  cases x; rfl
 #align subgroup_class.inclusion_right SubgroupClass.inclusion_right
 #align add_subgroup_class.inclusion_right AddSubgroupClass.inclusion_right
 
@@ -458,19 +447,14 @@ theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusionₓ'. -/
 @[simp]
 theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
-    inclusion hKL (inclusion hHK x) = inclusion (hHK.trans hKL) x :=
-  by
-  cases x
-  rfl
+    inclusion hKL (inclusion hHK x) = inclusion (hHK.trans hKL) x := by cases x; rfl
 #align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusion
 
 /- warning: subgroup_class.coe_inclusion -> SubgroupClass.coe_inclusion is a dubious translation:
 <too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inclusion SubgroupClass.coe_inclusionₓ'. -/
 @[simp, to_additive]
-theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
-  by
-  cases a
+theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by cases a;
   simp only [inclusion, [anonymous], MonoidHom.mk'_apply]
 #align subgroup_class.coe_inclusion SubgroupClass.coe_inclusion
 #align add_subgroup_class.coe_inclusion AddSubgroupClass.coe_inclusion
@@ -483,9 +467,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup_class.subtype_comp_inclusion SubgroupClass.subtype_comp_inclusionₓ'. -/
 @[simp, to_additive]
 theorem subtype_comp_inclusion {H K : S} (hH : H ≤ K) :
-    (SubgroupClass.subtype K).comp (inclusion hH) = SubgroupClass.subtype H :=
-  by
-  ext
+    (SubgroupClass.subtype K).comp (inclusion hH) = SubgroupClass.subtype H := by ext;
   simp only [MonoidHom.comp_apply, coeSubtype, coe_inclusion]
 #align subgroup_class.subtype_comp_inclusion SubgroupClass.subtype_comp_inclusion
 #align add_subgroup_class.subtype_comp_inclusion AddSubgroupClass.subtype_comp_inclusion
@@ -1271,10 +1253,8 @@ def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
 <too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_inclusion Subgroup.coe_inclusionₓ'. -/
 @[simp, to_additive]
-theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
-  by
-  cases a
-  simp only [inclusion, coe_mk, MonoidHom.mk'_apply]
+theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a := by
+  cases a; simp only [inclusion, coe_mk, MonoidHom.mk'_apply]
 #align subgroup.coe_inclusion Subgroup.coe_inclusion
 #align add_subgroup.coe_inclusion AddSubgroup.coe_inclusion
 
@@ -1455,9 +1435,7 @@ Case conversion may be inaccurate. Consider using '#align subgroup.coe_eq_single
 @[to_additive]
 theorem coe_eq_singleton {H : Subgroup G} : (∃ g : G, (H : Set G) = {g}) ↔ H = ⊥ :=
   ⟨fun ⟨g, hg⟩ =>
-    haveI : Subsingleton (H : Set G) := by
-      rw [hg]
-      infer_instance
+    haveI : Subsingleton (H : Set G) := by rw [hg]; infer_instance
     H.eq_bot_of_subsingleton,
     fun h => ⟨1, SetLike.ext'_iff.mp h⟩⟩
 #align subgroup.coe_eq_singleton Subgroup.coe_eq_singleton
@@ -1999,10 +1977,8 @@ but is expected to have type
   forall (G : Type.{u1}) [_inst_4 : Group.{u1} G] (S : Set.{u1} G), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_4) (Subgroup.closure.{u1} G _inst_4 S) (Bot.bot.{u1} (Subgroup.{u1} G _inst_4) (Subgroup.instBotSubgroup.{u1} G _inst_4))) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) S (Singleton.singleton.{u1, u1} G (Set.{u1} G) (Set.instSingletonSet.{u1} G) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_4))))))))
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iffₓ'. -/
 @[to_additive]
-theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} :=
-  by
-  rw [← le_bot_iff]
-  exact closure_le _
+theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} := by
+  rw [← le_bot_iff]; exact closure_le _
 #align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iff
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
 
@@ -2099,8 +2075,7 @@ theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (h
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hK i j with ⟨k, hki, hkj⟩
     exact ⟨k, mul_mem (hki hi) (hkj hj)⟩
-  rintro _ ⟨i, hi⟩
-  exact ⟨i, inv_mem hi⟩
+  rintro _ ⟨i, hi⟩; exact ⟨i, inv_mem hi⟩
 #align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directed
 #align add_subgroup.mem_supr_of_directed AddSubgroup.mem_iSup_of_directed
 
@@ -2193,10 +2168,7 @@ theorem comap_comap (K : Subgroup P) (g : N →* P) (f : G →* N) :
 
 #print Subgroup.comap_id /-
 @[simp, to_additive]
-theorem comap_id (K : Subgroup N) : K.comap (MonoidHom.id _) = K :=
-  by
-  ext
-  rfl
+theorem comap_id (K : Subgroup N) : K.comap (MonoidHom.id _) = K := by ext; rfl
 #align subgroup.comap_id Subgroup.comap_id
 #align add_subgroup.comap_id AddSubgroup.comap_id
 -/
@@ -2208,9 +2180,7 @@ theorem comap_id (K : Subgroup N) : K.comap (MonoidHom.id _) = K :=
 def map (f : G →* N) (H : Subgroup G) : Subgroup N :=
   { H.toSubmonoid.map f with
     carrier := f '' H
-    inv_mem' := by
-      rintro _ ⟨x, hx, rfl⟩
-      exact ⟨x⁻¹, H.inv_mem hx, f.map_inv x⟩ }
+    inv_mem' := by rintro _ ⟨x, hx, rfl⟩; exact ⟨x⁻¹, H.inv_mem hx, f.map_inv x⟩ }
 #align subgroup.map Subgroup.map
 #align add_subgroup.map AddSubgroup.map
 -/
@@ -2303,9 +2273,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup.map_one_eq_bot Subgroup.map_one_eq_botₓ'. -/
 @[simp, to_additive]
 theorem map_one_eq_bot : K.map (1 : G →* N) = ⊥ :=
-  eq_bot_iff.mpr <| by
-    rintro x ⟨y, _, rfl⟩
-    simp
+  eq_bot_iff.mpr <| by rintro x ⟨y, _, rfl⟩; simp
 #align subgroup.map_one_eq_bot Subgroup.map_one_eq_bot
 #align add_subgroup.map_zero_eq_bot AddSubgroup.map_zero_eq_bot
 
@@ -2524,12 +2492,8 @@ but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_top_of_surjective Subgroup.map_top_of_surjectiveₓ'. -/
 @[simp, to_additive]
-theorem map_top_of_surjective (f : G →* N) (h : Function.Surjective f) : Subgroup.map f ⊤ = ⊤ :=
-  by
-  rw [eq_top_iff]
-  intro x hx
-  obtain ⟨y, hy⟩ := h x
-  exact ⟨y, trivial, hy⟩
+theorem map_top_of_surjective (f : G →* N) (h : Function.Surjective f) : Subgroup.map f ⊤ = ⊤ := by
+  rw [eq_top_iff]; intro x hx; obtain ⟨y, hy⟩ := h x; exact ⟨y, trivial, hy⟩
 #align subgroup.map_top_of_surjective Subgroup.map_top_of_surjective
 #align add_subgroup.map_top_of_surjective AddSubgroup.map_top_of_surjective
 
@@ -3024,10 +2988,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup.pi_bot Subgroup.pi_botₓ'. -/
 @[to_additive]
 theorem pi_bot : (pi Set.univ fun i => (⊥ : Subgroup (f i))) = ⊥ :=
-  (eq_bot_iff_forall _).mpr fun p hp =>
-    by
-    simp only [mem_pi, mem_bot] at *
-    ext j
+  (eq_bot_iff_forall _).mpr fun p hp => by simp only [mem_pi, mem_bot] at *; ext j;
     exact hp j trivial
 #align subgroup.pi_bot Subgroup.pi_bot
 #align add_subgroup.pi_bot AddSubgroup.pi_bot
@@ -3043,11 +3004,8 @@ theorem le_pi_iff {I : Set η} {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i,
     J ≤ pi I H ↔ ∀ i : η, i ∈ I → map (Pi.evalMonoidHom f i) J ≤ H i :=
   by
   constructor
-  · intro h i hi
-    rintro _ ⟨x, hx, rfl⟩
-    exact (h hx) _ hi
-  · intro h x hx i hi
-    refine' h i hi ⟨_, hx, rfl⟩
+  · intro h i hi; rintro _ ⟨x, hx, rfl⟩; exact (h hx) _ hi
+  · intro h x hx i hi; refine' h i hi ⟨_, hx, rfl⟩
 #align subgroup.le_pi_iff Subgroup.le_pi_iff
 #align add_subgroup.le_pi_iff AddSubgroup.le_pi_iff
 
@@ -3062,12 +3020,10 @@ theorem mulSingle_mem_pi [DecidableEq η] {I : Set η} {H : ∀ i, Subgroup (f i
     Pi.mulSingle i x ∈ pi I H ↔ i ∈ I → x ∈ H i :=
   by
   constructor
-  · intro h hi
-    simpa using h i hi
+  · intro h hi; simpa using h i hi
   · intro h j hj
     by_cases heq : j = i
-    · subst HEq
-      simpa using h hj
+    · subst HEq; simpa using h hj
     · simp [HEq, one_mem]
 #align subgroup.mul_single_mem_pi Subgroup.mulSingle_mem_pi
 #align add_subgroup.single_mem_pi AddSubgroup.single_mem_pi
@@ -3393,11 +3349,8 @@ lean 3 declaration is
 but is expected to have type
   forall {G : Type.{u1}} [_inst_4 : CommGroup.{u1} G], Eq.{succ u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Subgroup.center.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Top.top.{u1} (Subgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)) (Subgroup.instTopSubgroup.{u1} G (CommGroup.toGroup.{u1} G _inst_4)))
 Case conversion may be inaccurate. Consider using '#align comm_group.center_eq_top CommGroup.center_eq_topₓ'. -/
-theorem CommGroup.center_eq_top {G : Type _} [CommGroup G] : center G = ⊤ :=
-  by
-  rw [eq_top_iff']
-  intro x y
-  exact mul_comm y x
+theorem CommGroup.center_eq_top {G : Type _} [CommGroup G] : center G = ⊤ := by rw [eq_top_iff'];
+  intro x y; exact mul_comm y x
 #align comm_group.center_eq_top CommGroup.center_eq_top
 
 /- warning: group.comm_group_of_center_eq_top -> Group.commGroupOfCenterEqTop is a dubious translation:
@@ -3408,11 +3361,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTopₓ'. -/
 /-- A group is commutative if the center is the whole group -/
 def Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
-  { (_ : Group G) with
-    mul_comm := by
-      rw [eq_top_iff'] at h
-      intro x y
-      exact h y x }
+  { (_ : Group G) with mul_comm := by rw [eq_top_iff'] at h; intro x y; exact h y x }
 #align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTop
 
 variable {G} (H)
@@ -3426,14 +3375,9 @@ def normalizer : Subgroup G
     where
   carrier := { g : G | ∀ n, n ∈ H ↔ g * n * g⁻¹ ∈ H }
   one_mem' := by simp
-  mul_mem' a b (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) (hb : ∀ n, n ∈ H ↔ b * n * b⁻¹ ∈ H) n :=
-    by
-    rw [hb, ha]
-    simp [mul_assoc]
-  inv_mem' a (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) n :=
-    by
-    rw [ha (a⁻¹ * n * a⁻¹⁻¹)]
-    simp [mul_assoc]
+  mul_mem' a b (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) (hb : ∀ n, n ∈ H ↔ b * n * b⁻¹ ∈ H) n := by
+    rw [hb, ha]; simp [mul_assoc]
+  inv_mem' a (ha : ∀ n, n ∈ H ↔ a * n * a⁻¹ ∈ H) n := by rw [ha (a⁻¹ * n * a⁻¹⁻¹)]; simp [mul_assoc]
 #align subgroup.normalizer Subgroup.normalizer
 #align add_subgroup.normalizer AddSubgroup.normalizer
 -/
@@ -3448,14 +3392,9 @@ def setNormalizer (S : Set G) : Subgroup G
     where
   carrier := { g : G | ∀ n, n ∈ S ↔ g * n * g⁻¹ ∈ S }
   one_mem' := by simp
-  mul_mem' a b (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) (hb : ∀ n, n ∈ S ↔ b * n * b⁻¹ ∈ S) n :=
-    by
-    rw [hb, ha]
-    simp [mul_assoc]
-  inv_mem' a (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) n :=
-    by
-    rw [ha (a⁻¹ * n * a⁻¹⁻¹)]
-    simp [mul_assoc]
+  mul_mem' a b (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) (hb : ∀ n, n ∈ S ↔ b * n * b⁻¹ ∈ S) n := by
+    rw [hb, ha]; simp [mul_assoc]
+  inv_mem' a (ha : ∀ n, n ∈ S ↔ a * n * a⁻¹ ∈ S) n := by rw [ha (a⁻¹ * n * a⁻¹⁻¹)]; simp [mul_assoc]
 #align subgroup.set_normalizer Subgroup.setNormalizer
 #align add_subgroup.set_normalizer AddSubgroup.setNormalizer
 -/
@@ -3889,9 +3828,7 @@ but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Subgroup.{u1} G _inst_1} [tn : Subgroup.Normal.{u1} G _inst_1 N] {a : 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)) a N) -> (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) (conjugatesOf.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) a) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N))
 Case conversion may be inaccurate. Consider using '#align group.conjugates_subset_normal Group.conjugates_subset_normalₓ'. -/
 theorem conjugates_subset_normal {N : Subgroup G} [tn : N.Normal] {a : G} (h : a ∈ N) :
-    conjugatesOf a ⊆ N := by
-  rintro a hc
-  obtain ⟨c, rfl⟩ := isConj_iff.1 hc
+    conjugatesOf a ⊆ N := by rintro a hc; obtain ⟨c, rfl⟩ := isConj_iff.1 hc;
   exact tn.conj_mem a h c
 #align group.conjugates_subset_normal Group.conjugates_subset_normal
 
@@ -4077,10 +4014,8 @@ lean 3 declaration is
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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))))) (Subgroup.normalCore.{u1} G _inst_1 H) H
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_le Subgroup.normalCore_leₓ'. -/
-theorem normalCore_le (H : Subgroup G) : H.normalCore ≤ H := fun a h =>
-  by
-  rw [← mul_one a, ← inv_one, ← one_mul a]
-  exact h 1
+theorem normalCore_le (H : Subgroup G) : H.normalCore ≤ H := fun a h => by
+  rw [← mul_one a, ← inv_one, ← one_mul a]; exact h 1
 #align subgroup.normal_core_le Subgroup.normalCore_le
 
 #print Subgroup.normalCore_normal /-
@@ -4320,11 +4255,8 @@ but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H)) H
 Case conversion may be inaccurate. Consider using '#align subgroup.subtype_range Subgroup.subtype_rangeₓ'. -/
 @[simp, to_additive]
-theorem Subgroup.subtype_range (H : Subgroup G) : H.Subtype.range = H :=
-  by
-  rw [range_eq_map, ← SetLike.coe_set_eq, coe_map, Subgroup.coeSubtype]
-  ext
-  simp
+theorem Subgroup.subtype_range (H : Subgroup G) : H.Subtype.range = H := by
+  rw [range_eq_map, ← SetLike.coe_set_eq, coe_map, Subgroup.coeSubtype]; ext; simp
 #align subgroup.subtype_range Subgroup.subtype_range
 #align add_subgroup.subtype_range AddSubgroup.subtype_range
 
@@ -4405,10 +4337,7 @@ Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injectiv
 @[to_additive "The range of an injective additive group homomorphism is isomorphic to its\ndomain."]
 noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃* f.range :=
   MulEquiv.ofBijective (f.codRestrict f.range fun x => ⟨x, rfl⟩)
-    ⟨fun x y h => hf (Subtype.ext_iff.mp h),
-      by
-      rintro ⟨x, y, rfl⟩
-      exact ⟨y, rfl⟩⟩
+    ⟨fun x y h => hf (Subtype.ext_iff.mp h), by rintro ⟨x, y, rfl⟩; exact ⟨y, rfl⟩⟩
 #align monoid_hom.of_injective MonoidHom.ofInjective
 #align add_monoid_hom.of_injective AddMonoidHom.ofInjective
 
@@ -4473,9 +4402,7 @@ but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_7 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_7)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Units.{u2} M _inst_7) (Units.instMulOneClassUnits.{u2} M _inst_7) (MonoidHom.toHomUnits.{u1, u2} G M _inst_1 _inst_7 f)) (MonoidHom.ker.{u1, u2} G _inst_1 M (Monoid.toMulOneClass.{u2} M _inst_7) f)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_to_hom_units MonoidHom.ker_toHomUnitsₓ'. -/
 @[simp, to_additive]
-theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker :=
-  by
-  ext x
+theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker := by ext x;
   simp [mem_ker, Units.ext_iff]
 #align monoid_hom.ker_to_hom_units MonoidHom.ker_toHomUnits
 #align add_monoid_hom.ker_to_hom_add_units AddMonoidHom.ker_toHomAddUnits
@@ -5178,10 +5105,8 @@ theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
 Case conversion may be inaccurate. Consider using '#align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_supₓ'. -/
 @[to_additive]
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
-    Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) :=
-  by
-  rw [codisjoint_iff, sup_subgroup_of_eq, subgroup_of_self]
-  exacts[le_sup_left, le_sup_right]
+    Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) := by
+  rw [codisjoint_iff, sup_subgroup_of_eq, subgroup_of_self]; exacts[le_sup_left, le_sup_right]
 #align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_sup
 #align add_subgroup.codisjoint_add_subgroup_of_sup AddSubgroup.codisjoint_addSubgroupOf_sup
 
@@ -5589,10 +5514,7 @@ namespace Subgroup
 Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquivₓ'. -/
 @[simp, to_additive]
 theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
-    H.equivMapOfInjective (e : G →* G') (EquivLike.injective e) = e.subgroupMap H :=
-  by
-  ext
-  rfl
+    H.equivMapOfInjective (e : G →* G') (EquivLike.injective e) = e.subgroupMap H := by ext; rfl
 #align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquiv
 #align add_subgroup.equiv_map_of_injective_coe_add_equiv AddSubgroup.equivMapOfInjective_coe_addEquiv
 
@@ -5797,12 +5719,9 @@ Case conversion may be inaccurate. Consider using '#align subgroup.commute_of_no
 theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Normal) (hH₂ : H₂.Normal)
     (hdis : Disjoint H₁ H₂) (x y : G) (hx : x ∈ H₁) (hy : y ∈ H₂) : Commute x y :=
   by
-  suffices x * y * x⁻¹ * y⁻¹ = 1 by
-    show x * y = y * x
-    · rw [mul_assoc, mul_eq_one_iff_eq_inv] at this
-      simpa
-  apply hdis.le_bot
-  constructor
+  suffices x * y * x⁻¹ * y⁻¹ = 1 by show x * y = y * x;
+    · rw [mul_assoc, mul_eq_one_iff_eq_inv] at this; simpa
+  apply hdis.le_bot; constructor
   · suffices x * (y * x⁻¹ * y⁻¹) ∈ H₁ by simpa [mul_assoc]
     exact H₁.mul_mem hx (hH₁.conj_mem _ (H₁.inv_mem hx) _)
   · show x * y * x⁻¹ * y⁻¹ ∈ H₂
Diff
@@ -375,10 +375,7 @@ protected def subtype : H →* G :=
 -/
 
 /- warning: subgroup_class.coe_subtype -> SubgroupClass.coeSubtype is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} (H : S) [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6], Eq.{succ u1} ((fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_subtype SubgroupClass.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : (SubgroupClass.subtype H : H → G) = coe :=
@@ -426,10 +423,7 @@ def inclusion {H K : S} (h : H ≤ K) : H →* K :=
 #align add_subgroup_class.inclusion AddSubgroupClass.inclusion
 
 /- warning: subgroup_class.inclusion_self -> SubgroupClass.inclusion_self is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H H (le_rfl.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H)) x) x
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))))) (SubgroupClass.inclusion.{u2, u1} G _inst_1 S _inst_6 hSG H H (le_rfl.{u1} S (PartialOrder.toPreorder.{u1} S (SetLike.instPartialOrder.{u1, u2} S G _inst_6)) H)) x) x
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_self SubgroupClass.inclusion_selfₓ'. -/
 @[simp, to_additive]
 theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
@@ -440,10 +434,7 @@ theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
 #align add_subgroup_class.inclusion_self AddSubgroupClass.inclusion_self
 
 /- warning: subgroup_class.inclusion_mk -> SubgroupClass.inclusion_mk is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K) x (h x hx))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_mk SubgroupClass.inclusion_mkₓ'. -/
 @[simp, to_additive]
 theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ :=
@@ -452,10 +443,7 @@ theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx
 #align add_subgroup_class.inclusion_mk AddSubgroupClass.inclusion_mk
 
 /- warning: subgroup_class.inclusion_right -> SubgroupClass.inclusion_right is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) hx)) x
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_right SubgroupClass.inclusion_rightₓ'. -/
 @[to_additive]
 theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x :=
@@ -466,10 +454,7 @@ theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h
 #align add_subgroup_class.inclusion_right AddSubgroupClass.inclusion_right
 
 /- warning: subgroup_class.inclusion_inclusion -> SubgroupClass.inclusion_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) K L) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusionₓ'. -/
 @[simp]
 theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
@@ -480,10 +465,7 @@ theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
 #align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusion
 
 /- warning: subgroup_class.coe_inclusion -> SubgroupClass.coe_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (a : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) a)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inclusion SubgroupClass.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -1286,10 +1268,7 @@ def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
 #align add_subgroup.inclusion AddSubgroup.inclusion
 
 /- warning: subgroup.coe_inclusion -> Subgroup.coe_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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)))) H K} (a : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) a)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_inclusion Subgroup.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -1300,10 +1279,7 @@ theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a
 #align add_subgroup.coe_inclusion AddSubgroup.coe_inclusion
 
 /- warning: subgroup.inclusion_injective -> Subgroup.inclusion_injective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Function.Injective.{succ u1, succ 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)) H) (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)) K) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_injective Subgroup.inclusion_injectiveₓ'. -/
 @[to_additive]
 theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h :=
@@ -2386,10 +2362,7 @@ theorem comap_equiv_eq_map_symm (f : N ≃* G) (K : Subgroup G) :
 #align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm
 
 /- warning: subgroup.map_symm_eq_iff_map_eq -> Subgroup.map_symm_eq_iff_map_eq is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u2} N _inst_4} {e : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))}, Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{u2, u1} N _inst_4 G _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u2) (succ u1), max (succ u1) (succ u2)} a b] => self.0) (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (HasLiftT.mk.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CoeTCₓ.coe.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.hasCoeT.{u2, u1, max u2 u1} N G (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MulEquivClass.monoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MulEquiv.mulEquivClass.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))) (MulEquiv.symm.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) e)) H) K) (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G N (MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MulEquiv.mulEquivClass.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))))))) e) K) H)
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u2} N _inst_4} {e : MulEquiv.{u1, u2} G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))}, Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{u2, u1} N _inst_4 G _inst_1 (MonoidHomClass.toMonoidHom.{u2, u1, max u1 u2} N G (MulEquiv.{u2, u1} N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u1 u2, u2, u1} (MulEquiv.{u2, u1} N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (MulEquiv.symm.{u1, u2} G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) e)) H) K) (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MonoidHomClass.toMonoidHom.{u1, u2, max u1 u2} G N (MulEquiv.{u1, u2} G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MulEquivClass.instMonoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) e) K) H)
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.map_symm_eq_iff_map_eq Subgroup.map_symm_eq_iff_map_eqₓ'. -/
 @[to_additive]
 theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} : H.map ↑e.symm = K ↔ K.map ↑e = H :=
@@ -2629,10 +2602,7 @@ theorem comap_inclusion_subgroupOf {K₁ K₂ : Subgroup G} (h : K₁ ≤ K₂)
 #align add_subgroup.comap_inclusion_add_subgroup_of AddSubgroup.comap_inclusion_addSubgroupOf
 
 /- warning: subgroup.coe_subgroup_of -> Subgroup.coe_subgroupOf is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (HasLiftT.mk.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (CoeTCₓ.coe.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (SetLike.Set.hasCoeT.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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)) K) 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) -> 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{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 K))) (SetLike.coe.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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 K)) 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 K)) 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 K)) (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 K)) (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 K)) => (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 K)) => 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 K)) 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 K)) (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 K)) 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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 K)) 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 K)) (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 K)) 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 K)) (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 K)) 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 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_subgroup_of Subgroup.coe_subgroupOfₓ'. -/
 @[to_additive]
 theorem coe_subgroupOf (H K : Subgroup G) : (H.subgroupOf K : Set K) = K.Subtype ⁻¹' H :=
@@ -4250,10 +4220,7 @@ def rangeRestrict (f : G →* N) : G →* f.range :=
 #align add_monoid_hom.range_restrict AddMonoidHom.rangeRestrict
 
 /- warning: monoid_hom.coe_range_restrict -> MonoidHom.coe_rangeRestrict is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f) g)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f g)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f g :=
@@ -4262,10 +4229,7 @@ theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f
 #align add_monoid_hom.coe_range_restrict AddMonoidHom.coe_rangeRestrict
 
 /- warning: monoid_hom.coe_comp_range_restrict -> MonoidHom.coe_comp_rangeRestrict is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{max (succ u1) (succ u2)} (G -> N) (Function.comp.{succ u1, succ u2, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem coe_comp_rangeRestrict (f : G →* N) :
@@ -4378,10 +4342,7 @@ theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
 #align add_subgroup.inclusion_range AddSubgroup.inclusion_range
 
 /- warning: monoid_hom.subgroup_of_range_eq_of_le -> MonoidHom.subgroupOf_range_eq_of_le is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} [_inst_6 : Group.{u1} G₁] [_inst_7 : Group.{u2} G₂] {K : Subgroup.{u2} G₂ _inst_7} (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (h : LE.le.{u2} (Subgroup.{u2} G₂ _inst_7) (Preorder.toHasLe.{u2} (Subgroup.{u2} G₂ _inst_7) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G₂ _inst_7) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)))) (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u2} (Subgroup.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u2} G₂ _inst_7 (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u1, u2} G₁ _inst_6 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K) (MonoidHom.codRestrict.{u1, u2, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7))) (Subgroup.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (SubgroupClass.to_submonoidClass.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (Subgroup.subgroupClass.{u2} G₂ _inst_7)) f K (fun (x : G₁) => h (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x) (Exists.intro.{succ u1} G₁ (fun (y : G₁) => Eq.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x)) x (rfl.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x))))))
-but is expected to have type
-  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_leₓ'. -/
 @[to_additive]
 theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
@@ -4415,10 +4376,7 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
 #align add_monoid_hom.of_left_inverse AddMonoidHom.ofLeftInverse
 
 /- warning: monoid_hom.of_left_inverse_apply -> MonoidHom.ofLeftInverse_apply is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
@@ -4428,10 +4386,7 @@ theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInve
 #align add_monoid_hom.of_left_inverse_apply AddMonoidHom.ofLeftInverse_apply
 
 /- warning: monoid_hom.of_left_inverse_symm_apply -> MonoidHom.ofLeftInverse_symm_apply is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)), Eq.{succ u1} G (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> G) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h)) x) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) x))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
@@ -4458,10 +4413,7 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
 #align add_monoid_hom.of_injective AddMonoidHom.ofInjective
 
 /- warning: monoid_hom.of_injective_apply -> MonoidHom.ofInjective_apply is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) {x : G}, Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofInjective.{u1, u2} G _inst_1 N _inst_4 f hf) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective_apply MonoidHom.ofInjective_applyₓ'. -/
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
@@ -5139,10 +5091,7 @@ theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injec
 #align add_subgroup.map_injective AddSubgroup.map_injective
 
 /- warning: subgroup.map_eq_comap_of_inverse -> Subgroup.map_eq_comap_of_inverse is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.RightInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 g H))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverseₓ'. -/
 @[to_additive]
 theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
@@ -5168,10 +5117,7 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
 
 /- warning: subgroup.closure_preimage_eq_top -> Subgroup.closure_preimage_eq_top is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) -> 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.hasTop.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_topₓ'. -/
 @[to_additive]
 theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹' s) = ⊤ :=
@@ -5228,10 +5174,7 @@ theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
 #align add_subgroup.sup_add_subgroup_of_eq AddSubgroup.sup_addSubgroupOf_eq
 
 /- warning: subgroup.codisjoint_subgroup_of_sup -> Subgroup.codisjoint_subgroupOf_sup is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))) (BoundedOrder.toOrderTop.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Preorder.toHasLe.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))))) (CompleteLattice.toBoundedOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Subgroup.completeLattice.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))
-but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (BoundedOrder.toOrderTop.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))))) (CompleteLattice.toBoundedOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_supₓ'. -/
 @[to_additive]
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
@@ -5259,10 +5202,7 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
 #align add_subgroup.equiv_map_of_injective AddSubgroup.equivMapOfInjective
 
 /- warning: subgroup.coe_equiv_map_of_injective_apply -> Subgroup.coe_equivMapOfInjective_apply is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (h : 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)) H), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 N _inst_4 H f hf) h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) h))
-but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
@@ -5395,10 +5335,7 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
 #align add_monoid_hom.lift_of_right_inverse_aux AddMonoidHom.liftOfRightInverseAux
 
 /- warning: monoid_hom.lift_of_right_inverse_aux_comp_apply -> MonoidHom.liftOfRightInverseAux_comp_apply is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.liftOfRightInverseAux.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) g x)
-but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5470,10 +5407,7 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
 #align add_monoid_hom.lift_of_surjective AddMonoidHom.liftOfSurjective
 
 /- warning: monoid_hom.lift_of_right_inverse_comp_apply -> MonoidHom.liftOfRightInverse_comp_apply is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max 1 (succ u3) (succ u1), max (succ u1) (succ u3)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (fun (x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) => G₁ -> G₃) (coeFnTrans.{max (succ u1) (succ u3), max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBaseAux.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))))) g x)
-but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
@@ -5484,10 +5418,7 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
 #align add_monoid_hom.lift_of_right_inverse_comp_apply AddMonoidHom.liftOfRightInverse_comp_apply
 
 /- warning: monoid_hom.lift_of_right_inverse_comp -> MonoidHom.liftOfRightInverse_comp is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) ((fun (a : Sort.{max 1 (succ u3) (succ u1)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} a b] => self.0) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (HasLiftT.mk.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (CoeTCₓ.coe.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBase.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)))))) g)
-but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_compₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
@@ -5497,10 +5428,7 @@ theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
 #align add_monoid_hom.lift_of_right_inverse_comp AddMonoidHom.liftOfRightInverse_comp
 
 /- warning: monoid_hom.eq_lift_of_right_inverse -> MonoidHom.eq_liftOfRightInverse is a dubious translation:
-lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) h (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) g hg)))
-but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverseₓ'. -/
 @[to_additive]
 theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5590,10 +5518,7 @@ def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
 #align add_monoid_hom.add_subgroup_map AddMonoidHom.addSubgroupMap
 
 /- warning: monoid_hom.subgroup_map_surjective -> MonoidHom.subgroupMap_surjective is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), Function.Surjective.{succ u1, succ u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (fun (_x : MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H))) (MonoidHom.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 f H))
-but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjectiveₓ'. -/
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
@@ -5624,10 +5549,7 @@ def subgroupCongr (h : H = K) : H ≃* K :=
 #align add_equiv.add_subgroup_congr AddEquiv.addSubgroupCongr
 
 /- warning: mul_equiv.subgroup_map -> MulEquiv.subgroupMap is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1), MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))
-but is expected to have type
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1), MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} G' (fun (x : G') => Membership.mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))))) e) H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))))) e) H))
+<too large>
 Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map MulEquiv.subgroupMapₓ'. -/
 /-- A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
 use `subgroup.equiv_map_of_injective`. -/
@@ -5639,10 +5561,7 @@ def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G')
 #align add_equiv.add_subgroup_map AddEquiv.addSubgroupMap
 
 /- warning: mul_equiv.coe_subgroup_map_apply -> MulEquiv.coe_subgroupMap_apply is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : 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)) H), Eq.{succ u2} G' ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H) g)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) => G -> G') (MulEquiv.hasCoeToFun.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) e ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) g))
-but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => G') _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
+<too large>
 Case conversion may be inaccurate. Consider using '#align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
@@ -5652,10 +5571,7 @@ theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
 #align add_equiv.coe_add_subgroup_map_apply AddEquiv.coe_addSubgroupMap_apply
 
 /- warning: mul_equiv.subgroup_map_symm_apply -> MulEquiv.subgroupMap_symm_apply is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)), Eq.{succ 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)) H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) -> (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)) H)) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (MulEquiv.symm.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Iff.mp (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) H) (SetLike.mem_coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1) H (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g))) (Iff.mp (Membership.Mem.{u2, u2} G' (Set.{u2} G') (Set.hasMem.{u2} G') ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g) (Set.image.{u1, u2} G G' (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} G G') (fun (_x : Equiv.{succ u1, succ u2} G G') => G -> G') (Equiv.hasCoeToFun.{succ u1, succ u2} G G') (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} G' G) (fun (_x : Equiv.{succ u2, succ u1} G' G) => G' -> G) (Equiv.hasCoeToFun.{succ u2, succ u1} G' G) (Equiv.symm.{succ u1, succ u2} G G' (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Set.mem_image_equiv.{u1, u2} G G' ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Subtype.property.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) g))))
-but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
@@ -5669,10 +5585,7 @@ end MulEquiv
 namespace Subgroup
 
 /- warning: subgroup.equiv_map_of_injective_coe_mul_equiv -> Subgroup.equivMapOfInjective_coe_mulEquiv is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))), Eq.{max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 G' _inst_2 H ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) (EquivLike.injective.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))))) e)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)
-but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (H : Subgroup.{u2} G _inst_1) (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))), Eq.{max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 G' _inst_2 H (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) (EquivLike.injective.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)
+<too large>
 Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquivₓ'. -/
 @[simp, to_additive]
 theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
Diff
@@ -378,7 +378,7 @@ protected def subtype : H →* G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} (H : S) [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6], Eq.{succ u1} ((fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_subtype SubgroupClass.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : (SubgroupClass.subtype H : H → G) = coe :=
@@ -429,7 +429,7 @@ def inclusion {H K : S} (h : H ≤ K) : H →* K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H H (le_rfl.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H)) x) x
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))))) (SubgroupClass.inclusion.{u2, u1} G _inst_1 S _inst_6 hSG H H (le_rfl.{u1} S (PartialOrder.toPreorder.{u1} S (SetLike.instPartialOrder.{u1, u2} S G _inst_6)) H)) x) x
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))))) (SubgroupClass.inclusion.{u2, u1} G _inst_1 S _inst_6 hSG H H (le_rfl.{u1} S (PartialOrder.toPreorder.{u1} S (SetLike.instPartialOrder.{u1, u2} S G _inst_6)) H)) x) x
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_self SubgroupClass.inclusion_selfₓ'. -/
 @[simp, to_additive]
 theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
@@ -443,7 +443,7 @@ theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K) x (h x hx))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_mk SubgroupClass.inclusion_mkₓ'. -/
 @[simp, to_additive]
 theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ :=
@@ -455,7 +455,7 @@ theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) hx)) x
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_right SubgroupClass.inclusion_rightₓ'. -/
 @[to_additive]
 theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x :=
@@ -469,7 +469,7 @@ theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) K L) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusionₓ'. -/
 @[simp]
 theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
@@ -483,7 +483,7 @@ theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (a : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) a)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inclusion SubgroupClass.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -1252,7 +1252,7 @@ protected def subtype : H →* G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (forall (ᾰ : 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 H)), (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 H)) => 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (forall (ᾰ : 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 H)), (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 H)) => 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_subtype Subgroup.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : ⇑H.Subtype = coe :=
@@ -1264,7 +1264,7 @@ theorem coeSubtype : ⇑H.Subtype = coe :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, succ 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)) H) 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.subtype_injective Subgroup.subtype_injectiveₓ'. -/
 @[to_additive]
 theorem subtype_injective : Injective (Subgroup.subtype H) :=
@@ -1289,7 +1289,7 @@ def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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)))) H K} (a : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) a)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_inclusion Subgroup.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -1303,7 +1303,7 @@ theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Function.Injective.{succ u1, succ 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)) H) (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)) K) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_injective Subgroup.inclusion_injectiveₓ'. -/
 @[to_additive]
 theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h :=
@@ -2174,7 +2174,7 @@ def comap {N : Type _} [Group N] (f : G →* N) (H : Subgroup N) : Subgroup G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4) K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_comap Subgroup.coe_comapₓ'. -/
 @[simp, to_additive]
 theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻¹' K :=
@@ -2186,7 +2186,7 @@ theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (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 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (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 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) K)
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_comap Subgroup.mem_comapₓ'. -/
 @[simp, to_additive]
 theorem mem_comap {K : Subgroup N} {f : G →* N} {x : G} : x ∈ K.comap f ↔ f x ∈ K :=
@@ -2243,7 +2243,7 @@ def map (f : G →* N) (H : Subgroup G) : Subgroup N :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_map Subgroup.coe_mapₓ'. -/
 @[simp, to_additive]
 theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
@@ -2255,7 +2255,7 @@ theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) (fun (H : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y)))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map Subgroup.mem_mapₓ'. -/
 @[simp, to_additive]
 theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃ x ∈ K, f x = y :=
@@ -2267,7 +2267,7 @@ theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {K : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) -> (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {K : Subgroup.{u2} G _inst_1} {x : G}, (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) -> (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {K : Subgroup.{u2} G _inst_1} {x : G}, (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) -> (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_of_mem Subgroup.mem_map_of_memₓ'. -/
 @[to_additive]
 theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) : f x ∈ K.map f :=
@@ -2279,7 +2279,7 @@ theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1) (x : 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)) K), Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) x)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1) (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1) (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
 Case conversion may be inaccurate. Consider using '#align subgroup.apply_coe_mem_map Subgroup.apply_coe_mem_mapₓ'. -/
 @[to_additive]
 theorem apply_coe_mem_map (f : G →* N) (K : Subgroup G) (x : K) : f x ∈ K.map f :=
@@ -2350,7 +2350,7 @@ theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {K : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {K : Subgroup.{u2} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {K : Subgroup.{u2} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_iff_mem Subgroup.mem_map_iff_memₓ'. -/
 @[to_additive]
 theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup G} {x : G} :
@@ -2521,7 +2521,7 @@ theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_eq Subgroup.map_inf_eqₓ'. -/
 @[to_additive]
 theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f) :
@@ -2548,7 +2548,7 @@ theorem map_bot (f : G →* N) : (⊥ : Subgroup G).map f = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (Top.top.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasTop.{u2} N _inst_4)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_top_of_surjective Subgroup.map_top_of_surjectiveₓ'. -/
 @[simp, to_additive]
 theorem map_top_of_surjective (f : G →* N) (h : Function.Surjective f) : Subgroup.map f ⊤ = ⊤ :=
@@ -2632,7 +2632,7 @@ theorem comap_inclusion_subgroupOf {K₁ K₂ : Subgroup G} (h : K₁ ≤ K₂)
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (HasLiftT.mk.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (CoeTCₓ.coe.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (SetLike.Set.hasCoeT.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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)) K) 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) -> 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{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 K))) (SetLike.coe.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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 K)) 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 K)) 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 K)) (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 K)) (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 K)) => (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 K)) => 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 K)) 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 K)) (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 K)) 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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 K)) 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 K)) (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 K)) 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 K)) (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 K)) 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 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{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 K))) (SetLike.coe.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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 K)) 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 K)) 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 K)) (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 K)) (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 K)) => (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 K)) => 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 K)) 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 K)) (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 K)) 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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 K)) 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 K)) (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 K)) 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 K)) (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 K)) 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 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_subgroup_of Subgroup.coe_subgroupOfₓ'. -/
 @[to_additive]
 theorem coe_subgroupOf (H K : Subgroup G) : (H.subgroupOf K : Set K) = K.Subtype ⁻¹' H :=
@@ -3825,7 +3825,7 @@ instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommu
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => G' -> G) (MonoidHom.hasCoeToFun.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
 but is expected to have type
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G') => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutativeₓ'. -/
 @[to_additive]
 theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutative] :
@@ -4190,7 +4190,7 @@ def range (f : G →* N) : Subgroup N :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Set.range.{u2, succ u1} N G (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range MonoidHom.coe_rangeₓ'. -/
 @[simp, to_additive]
 theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
@@ -4202,7 +4202,7 @@ theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Exists.{succ u1} G (fun (x : G) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_range MonoidHom.mem_rangeₓ'. -/
 @[simp, to_additive]
 theorem mem_range {f : G →* N} {y : N} : y ∈ f.range ↔ ∃ x, f x = y :=
@@ -4253,7 +4253,7 @@ def rangeRestrict (f : G →* N) : G →* f.range :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f) g)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f g)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f g :=
@@ -4265,7 +4265,7 @@ theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{max (succ u1) (succ u2)} (G -> N) (Function.comp.{succ u1, succ u2, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem coe_comp_rangeRestrict (f : G →* N) :
@@ -4290,7 +4290,7 @@ theorem subtype_comp_rangeRestrict (f : G →* N) : f.range.Subtype.comp f.range
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Function.Surjective.{succ u1, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjectiveₓ'. -/
 @[to_additive]
 theorem rangeRestrict_surjective (f : G →* N) : Function.Surjective f.range_restrict :=
@@ -4314,7 +4314,7 @@ theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).ran
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjectiveₓ'. -/
 @[to_additive]
 theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
@@ -4327,7 +4327,7 @@ theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjectiveₓ'. -/
 /-- The range of a surjective monoid homomorphism is the whole of the codomain. -/
 @[to_additive "The range of a surjective `add_monoid` homomorphism is the whole of the codomain."]
@@ -4381,7 +4381,7 @@ theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} [_inst_6 : Group.{u1} G₁] [_inst_7 : Group.{u2} G₂] {K : Subgroup.{u2} G₂ _inst_7} (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (h : LE.le.{u2} (Subgroup.{u2} G₂ _inst_7) (Preorder.toHasLe.{u2} (Subgroup.{u2} G₂ _inst_7) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G₂ _inst_7) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)))) (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u2} (Subgroup.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u2} G₂ _inst_7 (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u1, u2} G₁ _inst_6 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K) (MonoidHom.codRestrict.{u1, u2, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7))) (Subgroup.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (SubgroupClass.to_submonoidClass.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (Subgroup.subgroupClass.{u2} G₂ _inst_7)) f K (fun (x : G₁) => h (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x) (Exists.intro.{succ u1} G₁ (fun (y : G₁) => Eq.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x)) x (rfl.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x))))))
 but is expected to have type
-  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
+  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_leₓ'. -/
 @[to_additive]
 theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
@@ -4398,7 +4398,7 @@ theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂]
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse MonoidHom.ofLeftInverseₓ'. -/
 /-- Computable alternative to `monoid_hom.of_injective`. -/
 @[to_additive "Computable alternative to `add_monoid_hom.of_injective`."]
@@ -4418,7 +4418,7 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
@@ -4431,7 +4431,7 @@ theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInve
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)), Eq.{succ u1} G (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> G) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h)) x) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) x))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
@@ -4444,7 +4444,7 @@ theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.Lef
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective MonoidHom.ofInjectiveₓ'. -/
 /-- The range of an injective group homomorphism is isomorphic to its domain. -/
 @[to_additive "The range of an injective additive group homomorphism is isomorphic to its\ndomain."]
@@ -4461,7 +4461,7 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) {x : G}, Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofInjective.{u1, u2} G _inst_1 N _inst_4 f hf) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective_apply MonoidHom.ofInjective_applyₓ'. -/
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
@@ -4494,7 +4494,7 @@ def ker (f : G →* M) : Subgroup G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6)))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) _inst_6))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) _inst_6))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_ker MonoidHom.mem_kerₓ'. -/
 @[to_additive]
 theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
@@ -4506,7 +4506,7 @@ theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Set.preimage.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f) (Singleton.singleton.{u2, u2} M (Set.{u2} M) (Set.hasSingleton.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6))))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_ker MonoidHom.coe_kerₓ'. -/
 @[to_additive]
 theorem coe_ker (f : G →* M) : (f.ker : Set G) = (f : G → M) ⁻¹' {1} :=
@@ -4532,7 +4532,7 @@ theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f y)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) y) x) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_iff MonoidHom.eq_iffₓ'. -/
 @[to_additive]
 theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
@@ -4595,7 +4595,7 @@ theorem ker_restrict (f : G →* N) : (f.restrict K).ker = f.ker.subgroupOf K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.Mem.{u2, u3} N S (SetLike.hasMem.{u3, u2} S N _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (coeSort.{succ u3, succ (succ u2)} S Type.{u2} (SetLike.hasCoeToSort.{u3, u2} S N _inst_7) s) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrictₓ'. -/
 @[simp, to_additive]
 theorem ker_codRestrict {S} [SetLike S N] [SubmonoidClass S N] (f : G →* N) (s : S)
@@ -4644,7 +4644,7 @@ theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Function.Injective.{succ u1, succ u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
@@ -4744,7 +4744,7 @@ theorem eqLocus_same (f : G →* N) : f.eqLocus f = ⊤ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {s : Set.{u1} G}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_on_closure MonoidHom.eqOn_closureₓ'. -/
 /-- If two monoid homomorphisms are equal on a set, then they are equal on its subgroup closure. -/
 @[to_additive
@@ -4758,7 +4758,7 @@ theorem eqOn_closure {f g : G →* M} {s : Set G} (h : Set.EqOn f g s) : Set.EqO
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_topₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) : f = g :=
@@ -4770,7 +4770,7 @@ theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {s : Set.{u1} G}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 s) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) -> (forall {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_dense MonoidHom.eq_of_eqOn_denseₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_dense {s : Set G} (hs : closure s = ⊤) {f g : G →* M} (h : s.EqOn f g) : f = g :=
@@ -4784,7 +4784,7 @@ end EqLocus
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u2} N), 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)))) (Subgroup.closure.{u1} G _inst_1 (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} N _inst_4 s))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_leₓ'. -/
 @[to_additive]
 theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) ≤ (closure s).comap f :=
@@ -4796,7 +4796,7 @@ theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) 
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u1} G), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.closure.{u2} N _inst_4 (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_closure MonoidHom.map_closureₓ'. -/
 /-- The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup
 generated by the image of the set. -/
@@ -4818,7 +4818,7 @@ variable {N : Type _} [Group N] (H : Subgroup G)
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Subgroup.Normal.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.normal.map Subgroup.Normal.mapₓ'. -/
 @[to_additive]
 theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function.Surjective f) :
@@ -4846,7 +4846,7 @@ theorem map_eq_bot_iff {f : G →* N} : H.map f = ⊥ ↔ H ≤ f.ker :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff_of_injective Subgroup.map_eq_bot_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_eq_bot_iff_of_injective {f : G →* N} (hf : Function.Injective f) :
@@ -4968,7 +4968,7 @@ theorem map_comap_eq_self {f : G →* N} {H : Subgroup N} (h : H ≤ f.range) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjectiveₓ'. -/
 @[to_additive]
 theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective f) (H : Subgroup N) :
@@ -4994,7 +4994,7 @@ theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
@@ -5007,7 +5007,7 @@ theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (LT.lt.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLt.{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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LT.lt.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLt.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
@@ -5019,7 +5019,7 @@ theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} N _inst_4) (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective Subgroup.comap_injectiveₓ'. -/
 @[to_additive]
 theorem comap_injective {f : G →* N} (h : Function.Surjective f) : Function.Injective (comap f) :=
@@ -5043,7 +5043,7 @@ theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) : co
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injectiveₓ'. -/
 @[to_additive]
 theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
@@ -5105,7 +5105,7 @@ theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} : H.map f = f.range ↔
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
@@ -5130,7 +5130,7 @@ theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} G _inst_1) (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_injective Subgroup.map_injectiveₓ'. -/
 @[to_additive]
 theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) :=
@@ -5142,7 +5142,7 @@ theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injec
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.RightInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 g H))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverseₓ'. -/
 @[to_additive]
 theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
@@ -5171,7 +5171,7 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) -> 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.hasTop.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_topₓ'. -/
 @[to_additive]
 theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹' s) = ⊤ :=
@@ -5204,7 +5204,7 @@ theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq Subgroup.comap_sup_eqₓ'. -/
 @[to_additive]
 theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
@@ -5246,7 +5246,7 @@ theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjectiveₓ'. -/
 /-- A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
 use `mul_equiv.subgroup_map` for better definitional equalities. -/
@@ -5262,7 +5262,7 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (h : 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)) H), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 N _inst_4 H f hf) h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) h))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
@@ -5275,7 +5275,7 @@ theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Func
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Surjective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjectiveₓ'. -/
 /-- The preimage of the normalizer is equal to the normalizer of the preimage of a surjective
   function. -/
@@ -5297,7 +5297,7 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H : Subgroup G)
@@ -5353,7 +5353,7 @@ theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Bijective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_normalizer_eq_of_bijective Subgroup.map_normalizer_eq_of_bijectiveₓ'. -/
 /-- The image of the normalizer is equal to the normalizer of the image of a bijective
   function. -/
@@ -5377,7 +5377,7 @@ variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAuxₓ'. -/
 /-- Auxiliary definition used to define `lift_of_right_inverse` -/
 @[to_additive "Auxiliary definition used to define `lift_of_right_inverse`"]
@@ -5398,7 +5398,7 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.liftOfRightInverseAux.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) g x)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5416,7 +5416,7 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverseₓ'. -/
 /-- `lift_of_right_inverse f hf g hg` is the unique group homomorphism `φ`
 
@@ -5456,7 +5456,7 @@ def liftOfRightInverse (hf : Function.RightInverse f_inv f) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjectiveₓ'. -/
 /-- A non-computable version of `monoid_hom.lift_of_right_inverse` for when no computable right
 inverse is available, that uses `function.surj_inv`. -/
@@ -5473,7 +5473,7 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max 1 (succ u3) (succ u1), max (succ u1) (succ u3)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (fun (x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) => G₁ -> G₃) (coeFnTrans.{max (succ u1) (succ u3), max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBaseAux.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))))) g x)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
@@ -5487,7 +5487,7 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) ((fun (a : Sort.{max 1 (succ u3) (succ u1)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} a b] => self.0) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (HasLiftT.mk.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (CoeTCₓ.coe.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBase.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)))))) g)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_compₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
@@ -5500,7 +5500,7 @@ theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) h (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) g hg)))
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverseₓ'. -/
 @[to_additive]
 theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5593,7 +5593,7 @@ def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), Function.Surjective.{succ u1, succ u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (fun (_x : MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H))) (MonoidHom.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 f H))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjectiveₓ'. -/
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
@@ -5655,7 +5655,7 @@ theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)), Eq.{succ 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)) H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) -> (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)) H)) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (MulEquiv.symm.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Iff.mp (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) H) (SetLike.mem_coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1) H (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g))) (Iff.mp (Membership.Mem.{u2, u2} G' (Set.{u2} G') (Set.hasMem.{u2} G') ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g) (Set.image.{u1, u2} G G' (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} G G') (fun (_x : Equiv.{succ u1, succ u2} G G') => G -> G') (Equiv.hasCoeToFun.{succ u1, succ u2} G G') (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} G' G) (fun (_x : Equiv.{succ u2, succ u1} G' G) => G' -> G) (Equiv.hasCoeToFun.{succ u2, succ u1} G' G) (Equiv.symm.{succ u1, succ u2} G G' (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Set.mem_image_equiv.{u1, u2} G G' ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Subtype.property.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) g))))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
 Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
Diff
@@ -414,7 +414,7 @@ theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
 
 /- warning: subgroup_class.inclusion -> SubgroupClass.inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S}, (LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) -> (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S}, (LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) -> (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S}, (LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) -> (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion SubgroupClass.inclusionₓ'. -/
@@ -441,7 +441,7 @@ theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
 
 /- warning: subgroup_class.inclusion_mk -> SubgroupClass.inclusion_mk is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K) x (h x hx))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K) x (h x hx))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_mk SubgroupClass.inclusion_mkₓ'. -/
@@ -453,7 +453,7 @@ theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx
 
 /- warning: subgroup_class.inclusion_right -> SubgroupClass.inclusion_right is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) hx)) x
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) hx)) x
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_right SubgroupClass.inclusion_rightₓ'. -/
@@ -467,7 +467,7 @@ theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h
 
 /- warning: subgroup_class.inclusion_inclusion -> SubgroupClass.inclusion_inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) K L) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) K L) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusionₓ'. -/
@@ -481,7 +481,7 @@ theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
 
 /- warning: subgroup_class.coe_inclusion -> SubgroupClass.coe_inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (a : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (a : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) a)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inclusion SubgroupClass.coe_inclusionₓ'. -/
@@ -495,7 +495,7 @@ theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a
 
 /- warning: subgroup_class.subtype_comp_inclusion -> SubgroupClass.subtype_comp_inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} (hH : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K), Eq.{succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S K _inst_6 hSG) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hH)) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} (hH : LE.le.{u2} S (Preorder.toHasLe.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K), Eq.{succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S K _inst_6 hSG) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hH)) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} (hH : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K), Eq.{succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) G (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S K _inst_6 hSG) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hH)) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.subtype_comp_inclusion SubgroupClass.subtype_comp_inclusionₓ'. -/
@@ -590,7 +590,7 @@ theorem coe_set_mk {s : Set G} (h_one) (h_mul) (h_inv) : (mk s h_one h_mul h_inv
 
 /- warning: subgroup.mk_le_mk -> Subgroup.mk_le_mk is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G} (h_one : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) s) (h_inv : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) s)) (h_one' : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) t)) (h_mul' : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) t) (h_inv' : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) t)), Iff (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)))) (Subgroup.mk.{u1} G _inst_1 s h_one h_mul h_inv) (Subgroup.mk.{u1} G _inst_1 t h_one' h_mul' h_inv')) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s t)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G} (h_one : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) s) (h_inv : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x s) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) s)) (h_one' : forall {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) a t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) b t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) t)) (h_mul' : Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) t) (h_inv' : forall {x : G}, (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) x t) -> (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) t)), Iff (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)))) (Subgroup.mk.{u1} G _inst_1 s h_one h_mul h_inv) (Subgroup.mk.{u1} G _inst_1 t h_one' h_mul' h_inv')) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s t)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G} (h_one : forall {a : G} {b : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) b s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) s)) (h_mul : s (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (MulOneClass.toOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (h_inv : forall {x : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul)))) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul))))) (h_one' : forall {a : G} {b : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a t) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) b t) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) t)) (h_mul' : t (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (MulOneClass.toOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (h_inv' : forall {x : G}, (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) t h_one') h_mul')))) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) x) (Subsemigroup.carrier.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.toSubsemigroup.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) t h_one') h_mul'))))), Iff (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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) (Subgroup.mk.{u1} G _inst_1 (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) s h_one) h_mul) h_inv) (Subgroup.mk.{u1} G _inst_1 (Submonoid.mk.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subsemigroup.mk.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) t h_one') h_mul') h_inv')) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s t)
 Case conversion may be inaccurate. Consider using '#align subgroup.mk_le_mk Subgroup.mk_le_mkₓ'. -/
@@ -682,7 +682,7 @@ attribute [mono] AddSubgroup.toAddSubmonoid_mono
 
 /- warning: subgroup.to_submonoid_le -> Subgroup.toSubmonoid_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {q : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toLE.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Subgroup.toSubmonoid.{u1} G _inst_1 p) (Subgroup.toSubmonoid.{u1} G _inst_1 q)) (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)))) p q)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {q : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toHasLe.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Subgroup.toSubmonoid.{u1} G _inst_1 p) (Subgroup.toSubmonoid.{u1} G _inst_1 q)) (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)))) p q)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {q : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toLE.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instCompleteLatticeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Subgroup.toSubmonoid.{u1} G _inst_1 p) (Subgroup.toSubmonoid.{u1} G _inst_1 q)) (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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) p q)
 Case conversion may be inaccurate. Consider using '#align subgroup.to_submonoid_le Subgroup.toSubmonoid_leₓ'. -/
@@ -703,7 +703,7 @@ section mul_add
 
 /- warning: subgroup.to_add_subgroup -> Subgroup.toAddSubgroup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (Subgroup.{u1} G _inst_1) (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{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)))) (Preorder.toLE.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.setLike.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (Subgroup.{u1} G _inst_1) (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{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)))) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.setLike.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (Subgroup.{u1} G _inst_1) (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) (Preorder.toLE.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.instSetLikeAddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)))))
 Case conversion may be inaccurate. Consider using '#align subgroup.to_add_subgroup Subgroup.toAddSubgroupₓ'. -/
@@ -720,7 +720,7 @@ def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G)
 
 /- warning: add_subgroup.to_subgroup' -> AddSubgroup.toSubgroup' is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.setLike.{u1} (Additive.{u1} G) (Additive.addGroup.{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))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.setLike.{u1} (Additive.{u1} G) (Additive.addGroup.{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))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], OrderIso.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1)) (Additive.{u1} G) (AddSubgroup.instSetLikeAddSubgroup.{u1} (Additive.{u1} G) (Additive.addGroup.{u1} G _inst_1))))) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1))))
 Case conversion may be inaccurate. Consider using '#align add_subgroup.to_subgroup' AddSubgroup.toSubgroup'ₓ'. -/
@@ -731,7 +731,7 @@ abbrev AddSubgroup.toSubgroup' : AddSubgroup (Additive G) ≃o Subgroup G :=
 
 /- warning: add_subgroup.to_subgroup -> AddSubgroup.toSubgroup is a dubious translation:
 lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (AddSubgroup.{u1} A _inst_3) (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Preorder.toLE.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.setLike.{u1} A _inst_3)))) (Preorder.toLE.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.setLike.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)))))
+  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (AddSubgroup.{u1} A _inst_3) (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.setLike.{u1} A _inst_3)))) (Preorder.toHasLe.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.setLike.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)))))
 but is expected to have type
   forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (AddSubgroup.{u1} A _inst_3) (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Preorder.toLE.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.instSetLikeAddSubgroup.{u1} A _inst_3)))) (Preorder.toLE.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.instSetLikeSubgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)))))
 Case conversion may be inaccurate. Consider using '#align add_subgroup.to_subgroup AddSubgroup.toSubgroupₓ'. -/
@@ -749,7 +749,7 @@ def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A)
 
 /- warning: subgroup.to_add_subgroup' -> Subgroup.toAddSubgroup' is a dubious translation:
 lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (AddSubgroup.{u1} A _inst_3) (Preorder.toLE.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.setLike.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3))))) (Preorder.toLE.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.setLike.{u1} A _inst_3))))
+  forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (AddSubgroup.{u1} A _inst_3) (Preorder.toHasLe.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.setLike.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3))))) (Preorder.toHasLe.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.partialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.setLike.{u1} A _inst_3))))
 but is expected to have type
   forall {A : Type.{u1}} [_inst_3 : AddGroup.{u1} A], OrderIso.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (AddSubgroup.{u1} A _inst_3) (Preorder.toLE.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (SetLike.instPartialOrder.{u1, u1} (Subgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3)) (Multiplicative.{u1} A) (Subgroup.instSetLikeSubgroup.{u1} (Multiplicative.{u1} A) (Multiplicative.group.{u1} A _inst_3))))) (Preorder.toLE.{u1} (AddSubgroup.{u1} A _inst_3) (PartialOrder.toPreorder.{u1} (AddSubgroup.{u1} A _inst_3) (SetLike.instPartialOrder.{u1, u1} (AddSubgroup.{u1} A _inst_3) A (AddSubgroup.instSetLikeAddSubgroup.{u1} A _inst_3))))
 Case conversion may be inaccurate. Consider using '#align subgroup.to_add_subgroup' Subgroup.toAddSubgroup'ₓ'. -/
@@ -1274,7 +1274,7 @@ theorem subtype_injective : Injective (Subgroup.subtype H) :=
 
 /- warning: subgroup.inclusion -> Subgroup.inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K) -> (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.inclusion Subgroup.inclusionₓ'. -/
@@ -1287,7 +1287,7 @@ def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
 
 /- warning: subgroup.coe_inclusion -> Subgroup.coe_inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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)))) H K} (a : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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)))) H K} (a : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) a)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_inclusion Subgroup.coe_inclusionₓ'. -/
@@ -1301,7 +1301,7 @@ theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a
 
 /- warning: subgroup.inclusion_injective -> Subgroup.inclusion_injective is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Function.Injective.{succ u1, succ 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)) H) (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)) K) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Function.Injective.{succ u1, succ 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)) H) (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)) K) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_injective Subgroup.inclusion_injectiveₓ'. -/
@@ -1313,7 +1313,7 @@ theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injectiv
 
 /- warning: subgroup.subtype_comp_inclusion -> Subgroup.subtype_comp_inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (hH : 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)))) H K), Eq.{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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, 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)) H) (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)) K) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K hH)) (Subgroup.subtype.{u1} G _inst_1 H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (hH : 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)))) H K), Eq.{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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, 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)) H) (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)) K) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K hH)) (Subgroup.subtype.{u1} G _inst_1 H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (hH : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Eq.{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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHom.comp.{u1, 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 H)) (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 K)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K hH)) (Subgroup.subtype.{u1} G _inst_1 H)
 Case conversion may be inaccurate. Consider using '#align subgroup.subtype_comp_inclusion Subgroup.subtype_comp_inclusionₓ'. -/
@@ -1791,7 +1791,7 @@ open Set
 
 /- warning: subgroup.closure_le -> Subgroup.closure_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, Iff (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)))) (Subgroup.closure.{u1} G _inst_1 k) K) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, Iff (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)))) (Subgroup.closure.{u1} G _inst_1 k) K) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, Iff (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))))) (Subgroup.closure.{u1} G _inst_1 k) K) (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) k (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_le Subgroup.closure_leₓ'. -/
@@ -1804,7 +1804,7 @@ theorem closure_le : closure k ≤ K ↔ k ⊆ K :=
 
 /- warning: subgroup.closure_eq_of_le -> Subgroup.closure_eq_of_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)) -> (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)))) K (Subgroup.closure.{u1} G _inst_1 k)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k) K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) k ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K)) -> (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)))) K (Subgroup.closure.{u1} G _inst_1 k)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k) K)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (K : Subgroup.{u1} G _inst_1) {k : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) k (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) -> (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))))) K (Subgroup.closure.{u1} G _inst_1 k)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 k) K)
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_eq_of_le Subgroup.closure_eq_of_leₓ'. -/
@@ -1942,7 +1942,7 @@ variable {G}
 
 /- warning: subgroup.closure_mono -> Subgroup.closure_mono is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {{h : Set.{u1} G}} {{k : Set.{u1} G}}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) h k) -> (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)))) (Subgroup.closure.{u1} G _inst_1 h) (Subgroup.closure.{u1} G _inst_1 k))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {{h : Set.{u1} G}} {{k : Set.{u1} G}}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) h k) -> (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)))) (Subgroup.closure.{u1} G _inst_1 h) (Subgroup.closure.{u1} G _inst_1 k))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {{h : Set.{u1} G}} {{k : Set.{u1} G}}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) h k) -> (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))))) (Subgroup.closure.{u1} G _inst_1 h) (Subgroup.closure.{u1} G _inst_1 k))
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_mono Subgroup.closure_monoₓ'. -/
@@ -2082,7 +2082,7 @@ theorem closure_singleton_one : closure ({1} : Set G) = ⊥ := by
 
 /- warning: subgroup.le_closure_to_submonoid -> Subgroup.le_closure_toSubmonoid is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (S : Set.{u1} G), LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toLE.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Submonoid.closure.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) S) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 S))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (S : Set.{u1} G), LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toHasLe.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.setLike.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))) (Submonoid.closure.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) S) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 S))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (S : Set.{u1} G), LE.le.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Preorder.toLE.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Submonoid.instCompleteLatticeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Submonoid.closure.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) S) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 S))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_closure_to_submonoid Subgroup.le_closure_toSubmonoidₓ'. -/
@@ -2107,7 +2107,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 
 /- warning: subgroup.mem_supr_of_directed -> Subgroup.mem_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374) K) -> (forall {x : G}, Iff (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 (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directedₓ'. -/
@@ -2130,7 +2130,7 @@ theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (h
 
 /- warning: subgroup.coe_supr_of_directed -> Subgroup.coe_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.iUnion.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directedₓ'. -/
@@ -2143,7 +2143,7 @@ theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Di
 
 /- warning: subgroup.mem_Sup_of_directed_on -> Subgroup.mem_sSup_of_directedOn is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725) K) -> (forall {x : G}, Iff (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 (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_sSup_of_directedOnₓ'. -/
@@ -2196,7 +2196,7 @@ theorem mem_comap {K : Subgroup N} {f : G →* N} {x : G} : x ∈ K.comap f ↔
 
 /- warning: subgroup.comap_mono -> Subgroup.comap_mono is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {K' : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K K') -> (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K'))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {K' : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K K') -> (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K'))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {K' : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K K') -> (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K'))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_mono Subgroup.comap_monoₓ'. -/
@@ -2289,7 +2289,7 @@ theorem apply_coe_mem_map (f : G →* N) (K : Subgroup G) (x : K) : f x ∈ K.ma
 
 /- warning: subgroup.map_mono -> Subgroup.map_mono is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {K' : Subgroup.{u1} G _inst_1}, (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)))) K K') -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K'))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {K' : Subgroup.{u1} G _inst_1}, (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)))) K K') -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K'))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {K' : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) K K') -> (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K'))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_mono Subgroup.map_monoₓ'. -/
@@ -2406,7 +2406,7 @@ theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} : H.map ↑e.symm
 
 /- warning: subgroup.map_le_iff_le_comap -> Subgroup.map_le_iff_le_comap is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {H : Subgroup.{u2} N _inst_4}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K) H) (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)))) K (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {H : Subgroup.{u2} N _inst_4}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K) H) (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)))) K (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {H : Subgroup.{u1} N _inst_4}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K) H) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) K (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_iff_le_comap Subgroup.map_le_iff_le_comapₓ'. -/
@@ -2456,7 +2456,7 @@ theorem map_iSup {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
 
 /- warning: subgroup.comap_sup_comap_le -> Subgroup.comap_sup_comap_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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))))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_comap_le Subgroup.comap_sup_comap_leₓ'. -/
@@ -2469,7 +2469,7 @@ theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
 
 /- warning: subgroup.supr_comap_le -> Subgroup.iSup_comap_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), 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)))) (iSup.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (iSup.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι s))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), 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)))) (iSup.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (iSup.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι s))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u1} N _inst_4)), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (iSup.{u2, u3} (Subgroup.{u2} G _inst_1) (CompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)) ι (fun (i : ι) => Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (iSup.{u1, u3} (Subgroup.{u1} N _inst_4) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)) ι s))
 Case conversion may be inaccurate. Consider using '#align subgroup.supr_comap_le Subgroup.iSup_comap_leₓ'. -/
@@ -2507,7 +2507,7 @@ theorem comap_iInf {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
 
 /- warning: subgroup.map_inf_le -> Subgroup.map_inf_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_le Subgroup.map_inf_leₓ'. -/
@@ -2587,7 +2587,7 @@ def subgroupOf (H K : Subgroup G) : Subgroup K :=
 
 /- warning: subgroup.subgroup_of_equiv_of_le -> Subgroup.subgroupOfEquivOfLe is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_6 : Group.{u1} G] {H : Subgroup.{u1} G _inst_6} {K : Subgroup.{u1} G _inst_6}, (LE.le.{u1} (Subgroup.{u1} G _inst_6) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_6) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_6) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)))) H K) -> (MulEquiv.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K)) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.setLike.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K))) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) H) (Subgroup.mul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (Subgroup.mul.{u1} G _inst_6 H))
+  forall {G : Type.{u1}} [_inst_6 : Group.{u1} G] {H : Subgroup.{u1} G _inst_6} {K : Subgroup.{u1} G _inst_6}, (LE.le.{u1} (Subgroup.{u1} G _inst_6) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_6) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_6) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)))) H K) -> (MulEquiv.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K)) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.setLike.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K))) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) H) (Subgroup.mul.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_6) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.setLike.{u1} G _inst_6)) K) (Subgroup.toGroup.{u1} G _inst_6 K) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (Subgroup.mul.{u1} G _inst_6 H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_6 : Group.{u1} G] {H : Subgroup.{u1} G _inst_6} {K : Subgroup.{u1} G _inst_6}, (LE.le.{u1} (Subgroup.{u1} G _inst_6) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_6) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_6) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G _inst_6) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G _inst_6) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_6))))) H K) -> (MulEquiv.{u1, u1} (Subtype.{succ u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (fun (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) => Membership.mem.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.instSetLikeSubgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K))) x (Subgroup.subgroupOf.{u1} G _inst_6 H K))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x H)) (Subgroup.mul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_6) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_6) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_6)) x K)) (Subgroup.toGroup.{u1} G _inst_6 K) (Subgroup.subgroupOf.{u1} G _inst_6 H K)) (Subgroup.mul.{u1} G _inst_6 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_equiv_of_le Subgroup.subgroupOfEquivOfLeₓ'. -/
@@ -2617,7 +2617,7 @@ theorem comap_subtype (H K : Subgroup G) : H.comap K.Subtype = H.subgroupOf K :=
 
 /- warning: subgroup.comap_inclusion_subgroup_of -> Subgroup.comap_inclusion_subgroupOf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K₁ : Subgroup.{u1} G _inst_1} {K₂ : Subgroup.{u1} G _inst_1} (h : 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)))) K₁ K₂) (H : Subgroup.{u1} G _inst_1), Eq.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁)) (Subgroup.comap.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁) (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)) K₂) (Subgroup.toGroup.{u1} G _inst_1 K₂) (Subgroup.inclusion.{u1} G _inst_1 K₁ K₂ h) (Subgroup.subgroupOf.{u1} G _inst_1 H K₂)) (Subgroup.subgroupOf.{u1} G _inst_1 H K₁)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K₁ : Subgroup.{u1} G _inst_1} {K₂ : Subgroup.{u1} G _inst_1} (h : 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)))) K₁ K₂) (H : Subgroup.{u1} G _inst_1), Eq.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁)) (Subgroup.comap.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁) (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)) K₂) (Subgroup.toGroup.{u1} G _inst_1 K₂) (Subgroup.inclusion.{u1} G _inst_1 K₁ K₂ h) (Subgroup.subgroupOf.{u1} G _inst_1 H K₂)) (Subgroup.subgroupOf.{u1} G _inst_1 H K₁)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K₁ : Subgroup.{u1} G _inst_1} {K₂ : Subgroup.{u1} G _inst_1} (h : 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))))) K₁ K₂) (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 K₁)) (Subgroup.toGroup.{u1} G _inst_1 K₁)) (Subgroup.comap.{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 K₁)) (Subgroup.toGroup.{u1} G _inst_1 K₁) (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 K₂)) (Subgroup.toGroup.{u1} G _inst_1 K₂) (Subgroup.inclusion.{u1} G _inst_1 K₁ K₂ h) (Subgroup.subgroupOf.{u1} G _inst_1 H K₂)) (Subgroup.subgroupOf.{u1} G _inst_1 H K₁)
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_inclusion_subgroup_of Subgroup.comap_inclusion_subgroupOfₓ'. -/
@@ -2763,7 +2763,7 @@ theorem inf_subgroupOf_left (H K : Subgroup G) : (K ⊓ H).subgroupOf K = H.subg
 
 /- warning: subgroup.subgroup_of_eq_bot -> Subgroup.subgroupOf_eq_bot is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Bot.bot.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.hasBot.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Bot.bot.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.hasBot.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H K)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Bot.bot.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.instBotSubgroup.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_eq_bot Subgroup.subgroupOf_eq_botₓ'. -/
@@ -2775,7 +2775,7 @@ theorem subgroupOf_eq_bot {H K : Subgroup G} : H.subgroupOf K = ⊥ ↔ Disjoint
 
 /- warning: subgroup.subgroup_of_eq_top -> Subgroup.subgroupOf_eq_top is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Top.top.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.hasTop.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)))) K H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Top.top.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.hasTop.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)))) K H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K) (Top.top.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.instTopSubgroup.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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))))) K H)
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_eq_top Subgroup.subgroupOf_eq_topₓ'. -/
@@ -2827,7 +2827,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 
 /- warning: subgroup.prod_mono -> Subgroup.prod_mono is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14222 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14222 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14240 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14240 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14255 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14255 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
@@ -2911,7 +2911,7 @@ theorem bot_prod_bot : (⊥ : Subgroup G).Prod (⊥ : Subgroup N) = ⊥ :=
 
 /- warning: subgroup.le_prod_iff -> Subgroup.le_prod_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) J (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (And (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)))) (Subgroup.map.{max u1 u2, u1} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) G _inst_1 (MonoidHom.fst.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) J) H) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{max u1 u2, u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) N _inst_4 (MonoidHom.snd.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) J) K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) J (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)) (And (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)))) (Subgroup.map.{max u1 u2, u1} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) G _inst_1 (MonoidHom.fst.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) J) H) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{max u1 u2, u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) N _inst_4 (MonoidHom.snd.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) J) K))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u1} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)}, Iff (LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) J (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 H K)) (And (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.map.{max u2 u1, u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) G _inst_1 (MonoidHom.fst.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) J) H) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{max u2 u1, u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) N _inst_4 (MonoidHom.snd.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) J) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_prod_iff Subgroup.le_prod_iffₓ'. -/
@@ -2924,7 +2924,7 @@ theorem le_prod_iff {H : Subgroup G} {K : Subgroup N} {J : Subgroup (G × N)} :
 
 /- warning: subgroup.prod_le_iff -> Subgroup.prod_le_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K) J) (And (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.map.{u1, max u1 u2} G _inst_1 (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (MonoidHom.inl.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) H) J) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.map.{u2, max u1 u2} N _inst_4 (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (MonoidHom.inr.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) K) J))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u2} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K) J) (And (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.map.{u1, max u1 u2} G _inst_1 (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (MonoidHom.inl.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) H) J) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))) (Subgroup.map.{u2, max u1 u2} N _inst_4 (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (MonoidHom.inr.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) K) J))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u1} N _inst_4} {J : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)}, Iff (LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4 H K) J) (And (LE.le.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) (Subgroup.map.{u2, max u2 u1} G _inst_1 (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) (MonoidHom.inl.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) H) J) (LE.le.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) (Subgroup.map.{u1, max u2 u1} N _inst_4 (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4) (MonoidHom.inr.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) K) J))
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_le_iff Subgroup.prod_le_iffₓ'. -/
@@ -3064,7 +3064,7 @@ theorem pi_bot : (pi Set.univ fun i => (⊥ : Subgroup (f i))) = ⊥ :=
 
 /- warning: subgroup.le_pi_iff -> Subgroup.le_pi_iff is a dubious translation:
 lean 3 declaration is
-  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] {I : Set.{u1} η} {H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)} {J : Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.setLike.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))))) J (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (forall (i : η), (Membership.Mem.{u1, u1} η (Set.{u1} η) (Set.hasMem.{u1} η) i I) -> (LE.le.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Preorder.toLE.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} (f i) (_inst_6 i)) (f i) (Subgroup.setLike.{u2} (f i) (_inst_6 i))))) (Subgroup.map.{max u1 u2, u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)) (f i) (_inst_6 i) (Pi.evalMonoidHom.{u1, u2} η f (fun (i : η) => Monoid.toMulOneClass.{u2} (f i) (DivInvMonoid.toMonoid.{u2} (f i) (Group.toDivInvMonoid.{u2} (f i) (_inst_6 i)))) i) J) (H i)))
+  forall {η : Type.{u1}} {f : η -> Type.{u2}} [_inst_6 : forall (i : η), Group.{u2} (f i)] {I : Set.{u1} η} {H : forall (i : η), Subgroup.{u2} (f i) (_inst_6 i)} {J : Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))}, Iff (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Preorder.toHasLe.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (forall (i : η), f i) (Subgroup.setLike.{max u1 u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)))))) J (Subgroup.pi.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (forall (i : η), (Membership.Mem.{u1, u1} η (Set.{u1} η) (Set.hasMem.{u1} η) i I) -> (LE.le.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (Preorder.toHasLe.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} (f i) (_inst_6 i)) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} (f i) (_inst_6 i)) (f i) (Subgroup.setLike.{u2} (f i) (_inst_6 i))))) (Subgroup.map.{max u1 u2, u2} (forall (i : η), f i) (Pi.group.{u1, u2} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)) (f i) (_inst_6 i) (Pi.evalMonoidHom.{u1, u2} η f (fun (i : η) => Monoid.toMulOneClass.{u2} (f i) (DivInvMonoid.toMonoid.{u2} (f i) (Group.toDivInvMonoid.{u2} (f i) (_inst_6 i)))) i) J) (H i)))
 but is expected to have type
   forall {η : Type.{u2}} {f : η -> Type.{u1}} [_inst_6 : forall (i : η), Group.{u1} (f i)] {I : Set.{u2} η} {H : forall (i : η), Subgroup.{u1} (f i) (_inst_6 i)} {J : Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))}, Iff (LE.le.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Preorder.toLE.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i))))))) J (Subgroup.pi.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i) I H)) (forall (i : η), (Membership.mem.{u2, u2} η (Set.{u2} η) (Set.instMembershipSet.{u2} η) i I) -> (LE.le.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (Preorder.toLE.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} (f i) (_inst_6 i)) (Subgroup.instCompleteLatticeSubgroup.{u1} (f i) (_inst_6 i)))))) (Subgroup.map.{max u2 u1, u1} (forall (i : η), f i) (Pi.group.{u2, u1} η (fun (i : η) => f i) (fun (i : η) => _inst_6 i)) (f i) (_inst_6 i) (Pi.evalMonoidHom.{u2, u1} η f (fun (i : η) => Monoid.toMulOneClass.{u1} (f i) (DivInvMonoid.toMonoid.{u1} (f i) (Group.toDivInvMonoid.{u1} (f i) (_inst_6 i)))) i) J) (H i)))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_pi_iff Subgroup.le_pi_iffₓ'. -/
@@ -3256,7 +3256,7 @@ theorem characteristic_iff_comap_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.
 
 /- warning: subgroup.characteristic_iff_comap_le -> Subgroup.characteristic_iff_comap_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_comap_le Subgroup.characteristic_iff_comap_leₓ'. -/
@@ -3270,7 +3270,7 @@ theorem characteristic_iff_comap_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.
 
 /- warning: subgroup.characteristic_iff_le_comap -> Subgroup.characteristic_iff_le_comap is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) H (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) H (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) H (Subgroup.comap.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_le_comap Subgroup.characteristic_iff_le_comapₓ'. -/
@@ -3298,7 +3298,7 @@ theorem characteristic_iff_map_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.ma
 
 /- warning: subgroup.characteristic_iff_map_le -> Subgroup.characteristic_iff_map_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_map_le Subgroup.characteristic_iff_map_leₓ'. -/
@@ -3312,7 +3312,7 @@ theorem characteristic_iff_map_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.ma
 
 /- warning: subgroup.characteristic_iff_le_map -> Subgroup.characteristic_iff_le_map is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) H (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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)))) H (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, Iff (Subgroup.Characteristic.{u1} G _inst_1 H) (forall (ϕ : MulEquiv.{u1, u1} G G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))), 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))))) H (Subgroup.map.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.toMonoidHom.{u1, u1} G G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) ϕ) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.characteristic_iff_le_map Subgroup.characteristic_iff_le_mapₓ'. -/
@@ -3531,7 +3531,7 @@ theorem mem_normalizer_iff' {g : G} : g ∈ H.normalizer ↔ ∀ n, n * g ∈ H
 
 /- warning: subgroup.le_normalizer -> Subgroup.le_normalizer is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) H (Subgroup.normalizer.{u1} G _inst_1 H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) H (Subgroup.normalizer.{u1} G _inst_1 H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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))))) H (Subgroup.normalizer.{u1} G _inst_1 H)
 Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer Subgroup.le_normalizerₓ'. -/
@@ -3569,7 +3569,7 @@ theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
 
 /- warning: subgroup.center_le_normalizer -> Subgroup.center_le_normalizer is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) (Subgroup.center.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) (Subgroup.center.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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))))) (Subgroup.center.{u1} G _inst_1) (Subgroup.normalizer.{u1} G _inst_1 H)
 Case conversion may be inaccurate. Consider using '#align subgroup.center_le_normalizer Subgroup.center_le_normalizerₓ'. -/
@@ -3583,7 +3583,7 @@ open Classical
 
 /- warning: subgroup.le_normalizer_of_normal -> Subgroup.le_normalizer_of_normal is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} [hK : Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)], (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)))) H K) -> (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)))) K (Subgroup.normalizer.{u1} G _inst_1 H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} [hK : Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)], (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)))) H K) -> (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)))) K (Subgroup.normalizer.{u1} G _inst_1 H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} [hK : Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)], (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))))) H K) -> (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))))) K (Subgroup.normalizer.{u1} G _inst_1 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer_of_normal Subgroup.le_normalizer_of_normalₓ'. -/
@@ -3600,7 +3600,7 @@ variable {N : Type _} [Group N]
 
 /- warning: subgroup.le_normalizer_comap -> Subgroup.le_normalizer_comap is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer_comap Subgroup.le_normalizer_comapₓ'. -/
@@ -3616,7 +3616,7 @@ theorem le_normalizer_comap (f : N →* G) : H.normalizer.comap f ≤ (H.comap f
 
 /- warning: subgroup.le_normalizer_map -> Subgroup.le_normalizer_map is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {H : Subgroup.{u2} G _inst_1} {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_normalizer_map Subgroup.le_normalizer_mapₓ'. -/
@@ -3668,7 +3668,7 @@ variable (H)
 
 /- warning: subgroup.normalizer_condition.normal_of_coatom -> Subgroup.NormalizerCondition.normal_of_coatom is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), (NormalizerCondition.{u1} G _inst_1) -> (IsCoatom.{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))) (BoundedOrder.toOrderTop.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H) -> (Subgroup.Normal.{u1} G _inst_1 H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), (NormalizerCondition.{u1} G _inst_1) -> (IsCoatom.{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))) (BoundedOrder.toOrderTop.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H) -> (Subgroup.Normal.{u1} G _inst_1 H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), (NormalizerCondition.{u1} G _inst_1) -> (IsCoatom.{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)))) (BoundedOrder.toOrderTop.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H) -> (Subgroup.Normal.{u1} G _inst_1 H)
 Case conversion may be inaccurate. Consider using '#align subgroup.normalizer_condition.normal_of_coatom Subgroup.NormalizerCondition.normal_of_coatomₓ'. -/
@@ -3735,7 +3735,7 @@ theorem centralizer_top : centralizer ⊤ = center G :=
 
 /- warning: subgroup.le_centralizer_iff -> Subgroup.le_centralizer_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (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)))) H (Subgroup.centralizer.{u1} G _inst_1 K)) (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)))) K (Subgroup.centralizer.{u1} G _inst_1 H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (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)))) H (Subgroup.centralizer.{u1} G _inst_1 K)) (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)))) K (Subgroup.centralizer.{u1} G _inst_1 H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (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))))) H (Subgroup.centralizer.{u1} G _inst_1 K)) (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))))) K (Subgroup.centralizer.{u1} G _inst_1 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_centralizer_iff Subgroup.le_centralizer_iffₓ'. -/
@@ -3747,7 +3747,7 @@ theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
 
 /- warning: subgroup.centralizer_le -> Subgroup.centralizer_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)))) (Subgroup.centralizer.{u1} G _inst_1 K) (Subgroup.centralizer.{u1} G _inst_1 H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)))) (Subgroup.centralizer.{u1} G _inst_1 K) (Subgroup.centralizer.{u1} G _inst_1 H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (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))))) (Subgroup.centralizer.{u1} G _inst_1 K) (Subgroup.centralizer.{u1} G _inst_1 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.centralizer_le Subgroup.centralizer_leₓ'. -/
@@ -3853,7 +3853,7 @@ instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommuta
 
 /- warning: subgroup.le_centralizer_iff_is_commutative -> Subgroup.le_centralizer_iff_isCommutative is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Subgroup.{u1} G _inst_1}, Iff (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)))) K (Subgroup.centralizer.{u1} G _inst_1 K)) (Subgroup.IsCommutative.{u1} G _inst_1 K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Subgroup.{u1} G _inst_1}, Iff (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)))) K (Subgroup.centralizer.{u1} G _inst_1 K)) (Subgroup.IsCommutative.{u1} G _inst_1 K)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Subgroup.{u1} G _inst_1}, Iff (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))))) K (Subgroup.centralizer.{u1} G _inst_1 K)) (Subgroup.IsCommutative.{u1} G _inst_1 K)
 Case conversion may be inaccurate. Consider using '#align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutativeₓ'. -/
@@ -3866,7 +3866,7 @@ theorem le_centralizer_iff_isCommutative : K ≤ K.centralizer ↔ K.IsCommutati
 
 /- warning: subgroup.le_centralizer -> Subgroup.le_centralizer is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [h : Subgroup.IsCommutative.{u1} G _inst_1 H], 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)))) H (Subgroup.centralizer.{u1} G _inst_1 H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [h : Subgroup.IsCommutative.{u1} G _inst_1 H], 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)))) H (Subgroup.centralizer.{u1} G _inst_1 H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) [h : Subgroup.IsCommutative.{u1} G _inst_1 H], 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))))) H (Subgroup.centralizer.{u1} G _inst_1 H)
 Case conversion may be inaccurate. Consider using '#align subgroup.le_centralizer Subgroup.le_centralizerₓ'. -/
@@ -3988,7 +3988,7 @@ theorem subset_normalClosure : s ⊆ normalClosure s :=
 
 /- warning: subgroup.le_normal_closure -> Subgroup.le_normalClosure is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) H (Subgroup.normalClosure.{u1} G _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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)))) H (Subgroup.normalClosure.{u1} G _inst_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, 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))))) H (Subgroup.normalClosure.{u1} G _inst_1 (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_normal_closure Subgroup.le_normalClosureₓ'. -/
@@ -4013,7 +4013,7 @@ instance normalClosure_normal : (normalClosure s).Normal :=
 
 /- warning: subgroup.normal_closure_le_normal -> Subgroup.normalClosure_le_normal is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N)) -> (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N)) -> (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N)) -> (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))))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_closure_le_normal Subgroup.normalClosure_le_normalₓ'. -/
@@ -4030,7 +4030,7 @@ theorem normalClosure_le_normal {N : Subgroup G} [N.Normal] (h : s ⊆ N) : norm
 
 /- warning: subgroup.normal_closure_subset_iff -> Subgroup.normalClosure_subset_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], Iff (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N)) (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], Iff (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) N)) (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {N : Subgroup.{u1} G _inst_1} [_inst_4 : Subgroup.Normal.{u1} G _inst_1 N], Iff (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) N)) (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))))) (Subgroup.normalClosure.{u1} G _inst_1 s) N)
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_closure_subset_iff Subgroup.normalClosure_subset_iffₓ'. -/
@@ -4040,7 +4040,7 @@ theorem normalClosure_subset_iff {N : Subgroup G} [N.Normal] : s ⊆ N ↔ norma
 
 /- warning: subgroup.normal_closure_mono -> Subgroup.normalClosure_mono is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s t) -> (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 t))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.hasSubset.{u1} G) s t) -> (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)))) (Subgroup.normalClosure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 t))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {t : Set.{u1} G}, (HasSubset.Subset.{u1} (Set.{u1} G) (Set.instHasSubsetSet.{u1} G) s t) -> (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))))) (Subgroup.normalClosure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 t))
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_closure_mono Subgroup.normalClosure_monoₓ'. -/
@@ -4073,7 +4073,7 @@ theorem normalClosure_idempotent : normalClosure ↑(normalClosure s) = normalCl
 
 /- warning: subgroup.closure_le_normal_closure -> Subgroup.closure_le_normalClosure is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{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)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 s)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{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)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 s)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{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))))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 s)
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_le_normal_closure Subgroup.closure_le_normalClosureₓ'. -/
@@ -4103,7 +4103,7 @@ def normalCore (H : Subgroup G) : Subgroup G
 
 /- warning: subgroup.normal_core_le -> Subgroup.normalCore_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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)))) (Subgroup.normalCore.{u1} G _inst_1 H) H
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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)))) (Subgroup.normalCore.{u1} G _inst_1 H) H
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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))))) (Subgroup.normalCore.{u1} G _inst_1 H) H
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_le Subgroup.normalCore_leₓ'. -/
@@ -4122,7 +4122,7 @@ instance normalCore_normal (H : Subgroup G) : H.normalCore.Normal :=
 
 /- warning: subgroup.normal_le_normal_core -> Subgroup.normal_le_normalCore is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [hN : Subgroup.Normal.{u1} G _inst_1 N], Iff (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)))) N (Subgroup.normalCore.{u1} G _inst_1 H)) (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)))) N H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [hN : Subgroup.Normal.{u1} G _inst_1 N], Iff (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)))) N (Subgroup.normalCore.{u1} G _inst_1 H)) (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)))) N H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [hN : Subgroup.Normal.{u1} G _inst_1 N], Iff (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))))) N (Subgroup.normalCore.{u1} G _inst_1 H)) (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))))) N H)
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_le_normal_core Subgroup.normal_le_normalCoreₓ'. -/
@@ -4133,7 +4133,7 @@ theorem normal_le_normalCore {H : Subgroup G} {N : Subgroup G} [hN : N.Normal] :
 
 /- warning: subgroup.normal_core_mono -> Subgroup.normalCore_mono is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)))) (Subgroup.normalCore.{u1} G _inst_1 H) (Subgroup.normalCore.{u1} G _inst_1 K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)))) (Subgroup.normalCore.{u1} G _inst_1 H) (Subgroup.normalCore.{u1} G _inst_1 K))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (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))))) (Subgroup.normalCore.{u1} G _inst_1 H) (Subgroup.normalCore.{u1} G _inst_1 K))
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_mono Subgroup.normalCore_monoₓ'. -/
@@ -4143,7 +4143,7 @@ theorem normalCore_mono {H K : Subgroup G} (h : H ≤ K) : H.normalCore ≤ K.no
 
 /- warning: subgroup.normal_core_eq_supr -> Subgroup.normalCore_eq_iSup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (iSup.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (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)))) N H) (fun (hs : 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)))) N H) => N))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (iSup.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (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)))) N H) (fun (hs : 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)))) N H) => N))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (iSup.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (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))))) N H) (fun (hs : 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))))) N H) => N))))
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_iSupₓ'. -/
@@ -4366,7 +4366,7 @@ theorem Subgroup.subtype_range (H : Subgroup G) : H.Subtype.range = H :=
 
 /- warning: subgroup.inclusion_range -> Subgroup.inclusion_range is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h_le : 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)))) H K), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.range.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K h_le)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h_le : 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)))) H K), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.range.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K h_le)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h_le : 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))))) H K), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.range.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K h_le)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_range Subgroup.inclusion_rangeₓ'. -/
@@ -4379,7 +4379,7 @@ theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
 
 /- warning: monoid_hom.subgroup_of_range_eq_of_le -> MonoidHom.subgroupOf_range_eq_of_le is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} [_inst_6 : Group.{u1} G₁] [_inst_7 : Group.{u2} G₂] {K : Subgroup.{u2} G₂ _inst_7} (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (h : LE.le.{u2} (Subgroup.{u2} G₂ _inst_7) (Preorder.toLE.{u2} (Subgroup.{u2} G₂ _inst_7) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G₂ _inst_7) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)))) (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u2} (Subgroup.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u2} G₂ _inst_7 (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u1, u2} G₁ _inst_6 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K) (MonoidHom.codRestrict.{u1, u2, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7))) (Subgroup.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (SubgroupClass.to_submonoidClass.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (Subgroup.subgroupClass.{u2} G₂ _inst_7)) f K (fun (x : G₁) => h (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x) (Exists.intro.{succ u1} G₁ (fun (y : G₁) => Eq.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x)) x (rfl.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x))))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} [_inst_6 : Group.{u1} G₁] [_inst_7 : Group.{u2} G₂] {K : Subgroup.{u2} G₂ _inst_7} (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (h : LE.le.{u2} (Subgroup.{u2} G₂ _inst_7) (Preorder.toHasLe.{u2} (Subgroup.{u2} G₂ _inst_7) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G₂ _inst_7) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)))) (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u2} (Subgroup.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u2} G₂ _inst_7 (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u1, u2} G₁ _inst_6 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K) (MonoidHom.codRestrict.{u1, u2, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7))) (Subgroup.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (SubgroupClass.to_submonoidClass.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (Subgroup.subgroupClass.{u2} G₂ _inst_7)) f K (fun (x : G₁) => h (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x) (Exists.intro.{succ u1} G₁ (fun (y : G₁) => Eq.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x)) x (rfl.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x))))))
 but is expected to have type
   forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_leₓ'. -/
@@ -4667,7 +4667,7 @@ theorem Subgroup.ker_subtype (H : Subgroup G) : H.Subtype.ker = ⊥ :=
 
 /- warning: subgroup.ker_inclusion -> Subgroup.ker_inclusion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Subgroup.inclusion.{u1} G _inst_1 H K h)) (Bot.bot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasBot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Subgroup.inclusion.{u1} G _inst_1 H K h)) (Bot.bot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasBot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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))))) H K), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (Subgroup.inclusion.{u1} G _inst_1 H K h)) (Bot.bot.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instBotSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.ker_inclusion Subgroup.ker_inclusionₓ'. -/
@@ -4782,7 +4782,7 @@ end EqLocus
 
 /- warning: monoid_hom.closure_preimage_le -> MonoidHom.closure_preimage_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u2} N), 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)))) (Subgroup.closure.{u1} G _inst_1 (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} N _inst_4 s))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u2} N), 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)))) (Subgroup.closure.{u1} G _inst_1 (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} N _inst_4 s))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_leₓ'. -/
@@ -4832,7 +4832,7 @@ theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function
 
 /- warning: subgroup.map_eq_bot_iff -> Subgroup.map_eq_bot_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (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)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (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)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff Subgroup.map_eq_bot_iffₓ'. -/
@@ -4864,7 +4864,7 @@ variable {N : Type _} [Group N] (f : G →* N)
 
 /- warning: subgroup.map_le_range -> Subgroup.map_le_range is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_range Subgroup.map_le_rangeₓ'. -/
@@ -4876,7 +4876,7 @@ theorem map_le_range (H : Subgroup G) : map f H ≤ f.range :=
 
 /- warning: subgroup.map_subtype_le -> Subgroup.map_subtype_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} (K : 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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)), 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)))) (Subgroup.map.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H) K) H
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} (K : 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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)), 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)))) (Subgroup.map.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H) K) H
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} (K : 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)), 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))))) (Subgroup.map.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H) K) H
 Case conversion may be inaccurate. Consider using '#align subgroup.map_subtype_le Subgroup.map_subtype_leₓ'. -/
@@ -4888,7 +4888,7 @@ theorem map_subtype_le {H : Subgroup G} (K : Subgroup H) : K.map H.Subtype ≤ H
 
 /- warning: subgroup.ker_le_comap -> Subgroup.ker_le_comap is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), 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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), 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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), 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))))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)
 Case conversion may be inaccurate. Consider using '#align subgroup.ker_le_comap Subgroup.ker_le_comapₓ'. -/
@@ -4900,7 +4900,7 @@ theorem ker_le_comap (H : Subgroup N) : f.ker ≤ comap f H :=
 
 /- warning: subgroup.map_comap_le -> Subgroup.map_comap_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H
 Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_le Subgroup.map_comap_leₓ'. -/
@@ -4912,7 +4912,7 @@ theorem map_comap_le (H : Subgroup N) : map f (comap f H) ≤ H :=
 
 /- warning: subgroup.le_comap_map -> Subgroup.le_comap_map is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), 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)))) H (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), 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)))) H (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))
 Case conversion may be inaccurate. Consider using '#align subgroup.le_comap_map Subgroup.le_comap_mapₓ'. -/
@@ -4954,7 +4954,7 @@ theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
 
 /- warning: subgroup.map_comap_eq_self -> Subgroup.map_comap_eq_self is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) H (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self Subgroup.map_comap_eq_selfₓ'. -/
@@ -4979,7 +4979,7 @@ theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective
 
 /- warning: subgroup.comap_le_comap_of_le_range -> Subgroup.comap_le_comap_of_le_range is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_le_range Subgroup.comap_le_comap_of_le_rangeₓ'. -/
@@ -4992,7 +4992,7 @@ theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤
 
 /- warning: subgroup.comap_le_comap_of_surjective -> Subgroup.comap_le_comap_of_surjective is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjectiveₓ'. -/
@@ -5005,7 +5005,7 @@ theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 
 /- warning: subgroup.comap_lt_comap_of_surjective -> Subgroup.comap_lt_comap_of_surjective is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (LT.lt.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLT.{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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LT.lt.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLT.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (LT.lt.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLt.{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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LT.lt.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLt.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjectiveₓ'. -/
@@ -5029,7 +5029,7 @@ theorem comap_injective {f : G →* N} (h : Function.Surjective f) : Function.In
 
 /- warning: subgroup.comap_map_eq_self -> Subgroup.comap_map_eq_self is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H) -> (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self Subgroup.comap_map_eq_selfₓ'. -/
@@ -5054,7 +5054,7 @@ theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f)
 
 /- warning: subgroup.map_le_map_iff -> Subgroup.map_le_map_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff Subgroup.map_le_map_iffₓ'. -/
@@ -5066,7 +5066,7 @@ theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f 
 
 /- warning: subgroup.map_le_map_iff' -> Subgroup.map_le_map_iff' is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff' Subgroup.map_le_map_iff'ₓ'. -/
@@ -5091,7 +5091,7 @@ theorem map_eq_map_iff {f : G →* N} {H K : Subgroup G} :
 
 /- warning: subgroup.map_eq_range_iff -> Subgroup.map_eq_range_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Codisjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderTop.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Codisjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderTop.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Codisjoint.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) (BoundedOrder.toOrderTop.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (CompleteLattice.toBoundedOrder.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_range_iff Subgroup.map_eq_range_iffₓ'. -/
@@ -5103,7 +5103,7 @@ theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} : H.map f = f.range ↔
 
 /- warning: subgroup.map_le_map_iff_of_injective -> Subgroup.map_le_map_iff_of_injective is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H K))
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injectiveₓ'. -/
@@ -5115,7 +5115,7 @@ theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {
 
 /- warning: subgroup.map_subtype_le_map_subtype -> Subgroup.map_subtype_le_map_subtype is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {G' : Subgroup.{u1} G _inst_1} {H : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')} {K : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')}, Iff (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)))) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') H) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') K)) (LE.le.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (Preorder.toLE.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (PartialOrder.toPreorder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (SetLike.partialOrder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (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)) G') (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)) G') (Subgroup.toGroup.{u1} G _inst_1 G'))))) H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {G' : Subgroup.{u1} G _inst_1} {H : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')} {K : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')}, Iff (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)))) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') H) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') K)) (LE.le.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (Preorder.toHasLe.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (PartialOrder.toPreorder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (SetLike.partialOrder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (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)) G') (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)) G') (Subgroup.toGroup.{u1} G _inst_1 G'))))) H K)
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {G' : Subgroup.{u1} G _inst_1} {H : 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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')} {K : 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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')}, Iff (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))))) (Subgroup.map.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') H) (Subgroup.map.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') K)) (LE.le.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (Preorder.toLE.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (PartialOrder.toPreorder.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (CompleteSemilatticeInf.toPartialOrder.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (CompleteLattice.toCompleteSemilatticeInf.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (Subgroup.instCompleteLatticeSubgroup.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')))))) H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_subtype_le_map_subtype Subgroup.map_subtype_le_map_subtypeₓ'. -/
@@ -5153,7 +5153,7 @@ theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.Lef
 
 /- warning: subgroup.map_injective_of_ker_le -> Subgroup.map_injective_of_ker_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K)
 but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H) -> (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) -> (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_leₓ'. -/
@@ -5186,7 +5186,7 @@ theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹
 
 /- warning: subgroup.comap_sup_eq_of_le_range -> Subgroup.comap_sup_eq_of_le_range is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toHasLe.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq_of_le_range Subgroup.comap_sup_eq_of_le_rangeₓ'. -/
@@ -5216,7 +5216,7 @@ theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
 
 /- warning: subgroup.sup_subgroup_of_eq -> Subgroup.sup_subgroupOf_eq is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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)))) H L) -> (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)))) K L) -> (Eq.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Sup.sup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.completeLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K) L))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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)))) H L) -> (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)))) K L) -> (Eq.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Sup.sup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.completeLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K) L))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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))))) H L) -> (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))))) K L) -> (Eq.{succ 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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Sup.sup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.instCompleteLatticeSubgroup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K) L))
 Case conversion may be inaccurate. Consider using '#align subgroup.sup_subgroup_of_eq Subgroup.sup_subgroupOf_eqₓ'. -/
@@ -5229,7 +5229,7 @@ theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
 
 /- warning: subgroup.codisjoint_subgroup_of_sup -> Subgroup.codisjoint_subgroupOf_sup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))) (BoundedOrder.toOrderTop.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))))) (CompleteLattice.toBoundedOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Subgroup.completeLattice.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))) (BoundedOrder.toOrderTop.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Preorder.toHasLe.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))))) (CompleteLattice.toBoundedOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Subgroup.completeLattice.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (BoundedOrder.toOrderTop.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))))) (CompleteLattice.toBoundedOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_supₓ'. -/
@@ -5295,7 +5295,7 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
 
 /- warning: subgroup.comap_normalizer_eq_of_injective_of_le_range -> Subgroup.comap_normalizer_eq_of_injective_of_le_range is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_rangeₓ'. -/
@@ -5316,7 +5316,7 @@ theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H :
 
 /- warning: subgroup.subgroup_of_normalizer_eq -> Subgroup.subgroupOf_normalizer_eq is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1}, (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) N) -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.subgroupOf.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H) N) (Subgroup.normalizer.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Subgroup.subgroupOf.{u1} G _inst_1 H N)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1}, (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) N) -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.subgroupOf.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H) N) (Subgroup.normalizer.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Subgroup.subgroupOf.{u1} G _inst_1 H N)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1}, (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) N) -> (Eq.{succ 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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.subgroupOf.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H) N) (Subgroup.normalizer.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N) (Subgroup.subgroupOf.{u1} G _inst_1 H N)))
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_normalizer_eq Subgroup.subgroupOf_normalizer_eqₓ'. -/
@@ -5375,7 +5375,7 @@ variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 
 /- warning: monoid_hom.lift_of_right_inverse_aux -> MonoidHom.liftOfRightInverseAux is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAuxₓ'. -/
@@ -5396,7 +5396,7 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
 
 /- warning: monoid_hom.lift_of_right_inverse_aux_comp_apply -> MonoidHom.liftOfRightInverseAux_comp_apply is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.liftOfRightInverseAux.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) g x)
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.liftOfRightInverseAux.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) g x)
 but is expected to have type
   forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_applyₓ'. -/
@@ -5414,7 +5414,7 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
 
 /- warning: monoid_hom.lift_of_right_inverse -> MonoidHom.liftOfRightInverse is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverseₓ'. -/
@@ -5454,7 +5454,7 @@ def liftOfRightInverse (hf : Function.RightInverse f_inv f) :
 
 /- warning: monoid_hom.lift_of_surjective -> MonoidHom.liftOfSurjective is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjectiveₓ'. -/
@@ -5471,7 +5471,7 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
 
 /- warning: monoid_hom.lift_of_right_inverse_comp_apply -> MonoidHom.liftOfRightInverse_comp_apply is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max 1 (succ u3) (succ u1), max (succ u1) (succ u3)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (fun (x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) => G₁ -> G₃) (coeFnTrans.{max (succ u1) (succ u3), max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBaseAux.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))))) g x)
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max 1 (succ u3) (succ u1), max (succ u1) (succ u3)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (fun (x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) => G₁ -> G₃) (coeFnTrans.{max (succ u1) (succ u3), max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBaseAux.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))))) g x)
 but is expected to have type
   forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_applyₓ'. -/
@@ -5485,7 +5485,7 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
 
 /- warning: monoid_hom.lift_of_right_inverse_comp -> MonoidHom.liftOfRightInverse_comp is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) ((fun (a : Sort.{max 1 (succ u3) (succ u1)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} a b] => self.0) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (HasLiftT.mk.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (CoeTCₓ.coe.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBase.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)))))) g)
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) ((fun (a : Sort.{max 1 (succ u3) (succ u1)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} a b] => self.0) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (HasLiftT.mk.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (CoeTCₓ.coe.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBase.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)))))) g)
 but is expected to have type
   forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_compₓ'. -/
@@ -5498,7 +5498,7 @@ theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
 
 /- warning: monoid_hom.eq_lift_of_right_inverse -> MonoidHom.eq_liftOfRightInverse is a dubious translation:
 lean 3 declaration is
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) h (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) g hg)))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) h (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toHasLe.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) g hg)))
 but is expected to have type
   forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverseₓ'. -/
@@ -5751,7 +5751,7 @@ section SubgroupNormal
 
 /- warning: subgroup.normal_subgroup_of_iff -> Subgroup.normal_subgroupOf_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (Iff (Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (forall (h : G) (k : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) k K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) k h) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) k)) H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (Iff (Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (forall (h : G) (k : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) k K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) k h) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) k)) H)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (Iff (Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (forall (h : G) (k : 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)) h H) -> (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)) k K) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) k h) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) k)) H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_subgroup_of_iff Subgroup.normal_subgroupOf_iffₓ'. -/
@@ -5798,7 +5798,7 @@ instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.N
 
 /- warning: subgroup.inf_subgroup_of_inf_normal_of_right -> Subgroup.inf_subgroupOf_inf_normal_of_right is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) B' B) -> (forall [hN : Subgroup.Normal.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B') (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) B' B) -> (forall [hN : Subgroup.Normal.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B') (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) B' B) -> (forall [hN : Subgroup.Normal.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B') (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)))
 Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_rightₓ'. -/
@@ -5814,7 +5814,7 @@ theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
 
 /- warning: subgroup.inf_subgroup_of_inf_normal_of_left -> Subgroup.inf_subgroupOf_inf_normal_of_left is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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)))) A' A) -> (forall [hN : Subgroup.Normal.{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)) A) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A' B) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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)))) A' A) -> (forall [hN : Subgroup.Normal.{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)) A) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A' B) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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))))) A' A) -> (forall [hN : Subgroup.Normal.{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 A)) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A' B) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)))
 Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_leftₓ'. -/
@@ -5842,7 +5842,7 @@ instance normal_inf_normal (H K : Subgroup G) [hH : H.Normal] [hK : K.Normal] :
 
 /- warning: subgroup.subgroup_of_sup -> Subgroup.subgroupOf_sup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) A B) -> (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)))) A' B) -> (Eq.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) A A') B) (Sup.sup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.completeLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) A B) -> (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)))) A' B) -> (Eq.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) A A') B) (Sup.sup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.completeLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) A B) -> (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))))) A' B) -> (Eq.{succ 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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) A A') B) (Sup.sup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.instCompleteLatticeSubgroup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_sup Subgroup.subgroupOf_supₓ'. -/
@@ -5860,7 +5860,7 @@ theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
 
 /- warning: subgroup.subgroup_normal.mem_comm -> Subgroup.SubgroupNormal.mem_comm is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (forall [hN : Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)] {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) b K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (forall [hN : Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)] {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) b K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (forall [hN : Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)] {a : G} {b : 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)) b K) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_commₓ'. -/
@@ -5875,7 +5875,7 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
 
 /- warning: subgroup.commute_of_normal_of_disjoint -> Subgroup.commute_of_normal_of_disjoint is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H₁ : Subgroup.{u1} G _inst_1) (H₂ : Subgroup.{u1} G _inst_1), (Subgroup.Normal.{u1} G _inst_1 H₁) -> (Subgroup.Normal.{u1} G _inst_1 H₂) -> (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (forall (x : G) (y : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H₁ : Subgroup.{u1} G _inst_1) (H₂ : Subgroup.{u1} G _inst_1), (Subgroup.Normal.{u1} G _inst_1 H₁) -> (Subgroup.Normal.{u1} G _inst_1 H₂) -> (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (forall (x : G) (y : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H₁ : Subgroup.{u1} G _inst_1) (H₂ : Subgroup.{u1} G _inst_1), (Subgroup.Normal.{u1} G _inst_1 H₁) -> (Subgroup.Normal.{u1} G _inst_1 H₂) -> (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) -> (forall (x : G) (y : 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 H₁) -> (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)) y H₂) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))
 Case conversion may be inaccurate. Consider using '#align subgroup.commute_of_normal_of_disjoint Subgroup.commute_of_normal_of_disjointₓ'. -/
@@ -5902,7 +5902,7 @@ end SubgroupNormal
 
 /- warning: subgroup.disjoint_def -> Subgroup.disjoint_def is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {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 H₁) -> (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 H₂) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_def Subgroup.disjoint_defₓ'. -/
@@ -5914,7 +5914,7 @@ theorem disjoint_def {H₁ H₂ : Subgroup G} : Disjoint H₁ H₂ ↔ ∀ {x :
 
 /- warning: subgroup.disjoint_def' -> Subgroup.disjoint_def' is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G x y) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G x y) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : 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 H₁) -> (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)) y H₂) -> (Eq.{succ u1} G x y) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
 Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_def' Subgroup.disjoint_def'ₓ'. -/
@@ -5927,7 +5927,7 @@ theorem disjoint_def' {H₁ H₂ : Subgroup G} :
 
 /- warning: subgroup.disjoint_iff_mul_eq_one -> Subgroup.disjoint_iff_mul_eq_one is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) -> (And (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Eq.{succ u1} G y (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) -> (And (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Eq.{succ u1} G y (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : 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 H₁) -> (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)) y H₂) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) -> (And (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) (Eq.{succ u1} G y (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))))
 Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_iff_mul_eq_one Subgroup.disjoint_iff_mul_eq_oneₓ'. -/
@@ -5944,7 +5944,7 @@ theorem disjoint_iff_mul_eq_one {H₁ H₂ : Subgroup G} :
 
 /- warning: subgroup.mul_injective_of_disjoint -> Subgroup.mul_injective_of_disjoint is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (Function.Injective.{succ u1, succ u1} (Prod.{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)) H₁) (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)) H₂)) G (fun (g : Prod.{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)) H₁) (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)) H₂)) => HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₁) G (HasLiftT.mk.{succ u1, succ 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)) H₁) G (CoeTCₓ.coe.{succ u1, succ 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)) H₁) G (coeBase.{succ u1, succ 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)) H₁) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁))))) (Prod.fst.{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)) H₁) (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)) H₂) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₂) G (HasLiftT.mk.{succ u1, succ 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)) H₂) G (CoeTCₓ.coe.{succ u1, succ 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)) H₂) G (coeBase.{succ u1, succ 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)) H₂) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂))))) (Prod.snd.{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)) H₁) (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)) H₂) g))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (Function.Injective.{succ u1, succ u1} (Prod.{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)) H₁) (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)) H₂)) G (fun (g : Prod.{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)) H₁) (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)) H₂)) => HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₁) G (HasLiftT.mk.{succ u1, succ 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)) H₁) G (CoeTCₓ.coe.{succ u1, succ 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)) H₁) G (coeBase.{succ u1, succ 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)) H₁) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁))))) (Prod.fst.{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)) H₁) (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)) H₂) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₂) G (HasLiftT.mk.{succ u1, succ 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)) H₂) G (CoeTCₓ.coe.{succ u1, succ 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)) H₂) G (coeBase.{succ u1, succ 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)) H₂) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂))))) (Prod.snd.{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)) H₁) (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)) H₂) g))))
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) -> (Function.Injective.{succ u1, succ u1} (Prod.{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 H₁)) (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 H₂))) G (fun (g : Prod.{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 H₁)) (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 H₂))) => HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₁)) (Prod.fst.{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 H₁)) (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 H₂)) g)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₂)) (Prod.snd.{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 H₁)) (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 H₂)) g))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mul_injective_of_disjoint Subgroup.mul_injective_of_disjointₓ'. -/
Diff
@@ -2337,7 +2337,7 @@ theorem map_one_eq_bot : K.map (1 : G →* N) = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))} {K : Subgroup.{u1} G _inst_1} {x : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => N -> G) (MulEquiv.hasCoeToFun.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) x) K)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))} {K : Subgroup.{u2} G _inst_1} {x : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) x) (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f) x) K)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))} {K : Subgroup.{u2} G _inst_1} {x : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => G) x) (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f) x) K)
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_equiv Subgroup.mem_map_equivₓ'. -/
 @[to_additive]
 theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
@@ -4418,7 +4418,7 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
@@ -4431,7 +4431,7 @@ theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInve
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)), Eq.{succ u1} G (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> G) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h)) x) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) x))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
@@ -4461,7 +4461,7 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) {x : G}, Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofInjective.{u1, u2} G _inst_1 N _inst_4 f hf) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective_apply MonoidHom.ofInjective_applyₓ'. -/
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
@@ -5262,7 +5262,7 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (h : 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)) H), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 N _inst_4 H f hf) h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) h))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
@@ -5642,7 +5642,7 @@ def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G')
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : 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)) H), Eq.{succ u2} G' ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H) g)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) => G -> G') (MulEquiv.hasCoeToFun.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) e ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) g))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => G') _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => G') _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
 Case conversion may be inaccurate. Consider using '#align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
@@ -5655,7 +5655,7 @@ theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)), Eq.{succ 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)) H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) -> (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)) H)) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (MulEquiv.symm.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Iff.mp (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) H) (SetLike.mem_coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1) H (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g))) (Iff.mp (Membership.Mem.{u2, u2} G' (Set.{u2} G') (Set.hasMem.{u2} G') ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g) (Set.image.{u1, u2} G G' (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} G G') (fun (_x : Equiv.{succ u1, succ u2} G G') => G -> G') (Equiv.hasCoeToFun.{succ u1, succ u2} G G') (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} G' G) (fun (_x : Equiv.{succ u2, succ u1} G' G) => G' -> G) (Equiv.hasCoeToFun.{succ u2, succ u1} G' G) (Equiv.symm.{succ u1, succ u2} G G' (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Set.mem_image_equiv.{u1, u2} G G' ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Subtype.property.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) g))))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G') => G) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
 Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
Diff
@@ -1569,55 +1569,55 @@ instance : InfSet (Subgroup G) :=
   ⟨fun s =>
     { (⨅ S ∈ s, Subgroup.toSubmonoid S).copy (⋂ S ∈ s, ↑S) (by simp) with
       inv_mem' := fun x hx =>
-        Set.mem_binterᵢ fun i h => i.inv_mem (by apply Set.mem_interᵢ₂.1 hx i h) }⟩
+        Set.mem_biInter fun i h => i.inv_mem (by apply Set.mem_iInter₂.1 hx i h) }⟩
 
-/- warning: subgroup.coe_Inf -> Subgroup.coe_infₛ is a dubious translation:
+/- warning: subgroup.coe_Inf -> Subgroup.coe_sInf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Set.{u1} (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (InfSet.infₛ.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H)) (Set.interᵢ.{u1, succ u1} G (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Set.interᵢ.{u1, 0} G (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s H) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s H) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) s)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Set.{u1} (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H)) (Set.iInter.{u1, succ u1} G (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Set.iInter.{u1, 0} G (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s H) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s H) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) s)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Set.{u1} (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (InfSet.infₛ.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) H)) (Set.interᵢ.{u1, succ u1} G (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Set.interᵢ.{u1, 0} G (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s H) (fun (H : Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s H) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) s)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_Inf Subgroup.coe_infₛₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Set.{u1} (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) H)) (Set.iInter.{u1, succ u1} G (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Set.iInter.{u1, 0} G (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s H) (fun (H : Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s H) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) s)))
+Case conversion may be inaccurate. Consider using '#align subgroup.coe_Inf Subgroup.coe_sInfₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_infₛ (H : Set (Subgroup G)) : ((infₛ H : Subgroup G) : Set G) = ⋂ s ∈ H, ↑s :=
+theorem coe_sInf (H : Set (Subgroup G)) : ((sInf H : Subgroup G) : Set G) = ⋂ s ∈ H, ↑s :=
   rfl
-#align subgroup.coe_Inf Subgroup.coe_infₛ
-#align add_subgroup.coe_Inf AddSubgroup.coe_infₛ
+#align subgroup.coe_Inf Subgroup.coe_sInf
+#align add_subgroup.coe_Inf AddSubgroup.coe_sInf
 
-/- warning: subgroup.mem_Inf -> Subgroup.mem_infₛ is a dubious translation:
+/- warning: subgroup.mem_Inf -> Subgroup.mem_sInf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (InfSet.infₛ.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) S)) (forall (p : Subgroup.{u1} G _inst_1), (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) p S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) S)) (forall (p : Subgroup.{u1} G _inst_1), (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) p S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {x : G}, Iff (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 (InfSet.infₛ.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) S)) (forall (p : Subgroup.{u1} G _inst_1), (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) p S) -> (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 p))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_Inf Subgroup.mem_infₛₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {x : G}, Iff (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 (InfSet.sInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) S)) (forall (p : Subgroup.{u1} G _inst_1), (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) p S) -> (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 p))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_Inf Subgroup.mem_sInfₓ'. -/
 @[simp, to_additive]
-theorem mem_infₛ {S : Set (Subgroup G)} {x : G} : x ∈ infₛ S ↔ ∀ p ∈ S, x ∈ p :=
-  Set.mem_interᵢ₂
-#align subgroup.mem_Inf Subgroup.mem_infₛ
-#align add_subgroup.mem_Inf AddSubgroup.mem_infₛ
+theorem mem_sInf {S : Set (Subgroup G)} {x : G} : x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p :=
+  Set.mem_iInter₂
+#align subgroup.mem_Inf Subgroup.mem_sInf
+#align add_subgroup.mem_Inf AddSubgroup.mem_sInf
 
-/- warning: subgroup.mem_infi -> Subgroup.mem_infᵢ is a dubious translation:
+/- warning: subgroup.mem_infi -> Subgroup.mem_iInf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (infᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => S i))) (forall (i : ι), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (S i))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => S i))) (forall (i : ι), Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (S i))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} {x : G}, Iff (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 (infᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) ι (fun (i : ι) => S i))) (forall (i : ι), 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 (S i))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_infi Subgroup.mem_infᵢₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} {x : G}, Iff (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 (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) ι (fun (i : ι) => S i))) (forall (i : ι), 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 (S i))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_infi Subgroup.mem_iInfₓ'. -/
 @[to_additive]
-theorem mem_infᵢ {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
-  simp only [infᵢ, mem_Inf, Set.forall_range_iff]
-#align subgroup.mem_infi Subgroup.mem_infᵢ
-#align add_subgroup.mem_infi AddSubgroup.mem_infᵢ
+theorem mem_iInf {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
+  simp only [iInf, mem_Inf, Set.forall_range_iff]
+#align subgroup.mem_infi Subgroup.mem_iInf
+#align add_subgroup.mem_infi AddSubgroup.mem_iInf
 
-/- warning: subgroup.coe_infi -> Subgroup.coe_infᵢ is a dubious translation:
+/- warning: subgroup.coe_infi -> Subgroup.coe_iInf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (infᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => S i))) (Set.interᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)}, Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => S i))) (Set.iInter.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (infᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) ι (fun (i : ι) => S i))) (Set.interᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_infi Subgroup.coe_infᵢₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)}, Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (iInf.{u1, u2} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSetSubgroup.{u1} G _inst_1) ι (fun (i : ι) => S i))) (Set.iInter.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i)))
+Case conversion may be inaccurate. Consider using '#align subgroup.coe_infi Subgroup.coe_iInfₓ'. -/
 @[simp, norm_cast, to_additive]
-theorem coe_infᵢ {ι : Sort _} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
-  simp only [infᵢ, coe_Inf, Set.binterᵢ_range]
-#align subgroup.coe_infi Subgroup.coe_infᵢ
-#align add_subgroup.coe_infi AddSubgroup.coe_infᵢ
+theorem coe_iInf {ι : Sort _} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
+  simp only [iInf, coe_Inf, Set.biInter_range]
+#align subgroup.coe_infi Subgroup.coe_iInf
+#align add_subgroup.coe_infi AddSubgroup.coe_iInf
 
 /-- Subgroups of a group form a complete lattice. -/
 @[to_additive "The `add_subgroup`s of an `add_group` form a complete lattice."]
@@ -1625,7 +1625,7 @@ instance : CompleteLattice (Subgroup G) :=
   {
     completeLatticeOfInf (Subgroup G) fun s =>
       IsGLB.of_image (fun H K => show (H : Set G) ≤ K ↔ H ≤ K from SetLike.coe_subset_coe)
-        isGLB_binfᵢ with
+        isGLB_biInf with
     bot := ⊥
     bot_le := fun S x hx => (mem_bot.1 hx).symm ▸ S.one_mem
     top := ⊤
@@ -1671,31 +1671,31 @@ theorem mul_mem_sup {S T : Subgroup G} {x y : G} (hx : x ∈ S) (hy : y ∈ T) :
 #align subgroup.mul_mem_sup Subgroup.mul_mem_sup
 #align add_subgroup.add_mem_sup AddSubgroup.add_mem_sup
 
-/- warning: subgroup.mem_supr_of_mem -> Subgroup.mem_supᵢ_of_mem is a dubious translation:
+/- warning: subgroup.mem_supr_of_mem -> Subgroup.mem_iSup_of_mem is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} (i : ι) {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (S i)) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι S))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} (i : ι) {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (S i)) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι S))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} (i : ι) {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 (S i)) -> (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι S))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_mem Subgroup.mem_supᵢ_of_memₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} {S : ι -> (Subgroup.{u1} G _inst_1)} (i : ι) {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 (S i)) -> (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 (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι S))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_mem Subgroup.mem_iSup_of_memₓ'. -/
 @[to_additive]
-theorem mem_supᵢ_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
-    ∀ {x : G}, x ∈ S i → x ∈ supᵢ S :=
-  show S i ≤ supᵢ S from le_supᵢ _ _
-#align subgroup.mem_supr_of_mem Subgroup.mem_supᵢ_of_mem
-#align add_subgroup.mem_supr_of_mem AddSubgroup.mem_supᵢ_of_mem
+theorem mem_iSup_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
+    ∀ {x : G}, x ∈ S i → x ∈ iSup S :=
+  show S i ≤ iSup S from le_iSup _ _
+#align subgroup.mem_supr_of_mem Subgroup.mem_iSup_of_mem
+#align add_subgroup.mem_supr_of_mem AddSubgroup.mem_iSup_of_mem
 
-/- warning: subgroup.mem_Sup_of_mem -> Subgroup.mem_supₛ_of_mem is a dubious translation:
+/- warning: subgroup.mem_Sup_of_mem -> Subgroup.mem_sSup_of_mem is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {s : Subgroup.{u1} G _inst_1}, (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s S) -> (forall {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) S)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {s : Subgroup.{u1} G _inst_1}, (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s S) -> (forall {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) S)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {s : Subgroup.{u1} G _inst_1}, (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s S) -> (forall {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 s) -> (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) S)))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_mem Subgroup.mem_supₛ_of_memₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Set.{u1} (Subgroup.{u1} G _inst_1)} {s : Subgroup.{u1} G _inst_1}, (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s S) -> (forall {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 s) -> (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 (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) S)))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_mem Subgroup.mem_sSup_of_memₓ'. -/
 @[to_additive]
-theorem mem_supₛ_of_mem {S : Set (Subgroup G)} {s : Subgroup G} (hs : s ∈ S) :
-    ∀ {x : G}, x ∈ s → x ∈ supₛ S :=
-  show s ≤ supₛ S from le_supₛ hs
-#align subgroup.mem_Sup_of_mem Subgroup.mem_supₛ_of_mem
-#align add_subgroup.mem_Sup_of_mem AddSubgroup.mem_supₛ_of_mem
+theorem mem_sSup_of_mem {S : Set (Subgroup G)} {s : Subgroup G} (hs : s ∈ S) :
+    ∀ {x : G}, x ∈ s → x ∈ sSup S :=
+  show s ≤ sSup S from le_sSup hs
+#align subgroup.mem_Sup_of_mem Subgroup.mem_sSup_of_mem
+#align add_subgroup.mem_Sup_of_mem AddSubgroup.mem_sSup_of_mem
 
 #print Subgroup.subsingleton_iff /-
 @[simp, to_additive]
@@ -1744,7 +1744,7 @@ theorem eq_top_iff' : H = ⊤ ↔ ∀ x : G, x ∈ H :=
 /-- The `subgroup` generated by a set. -/
 @[to_additive "The `add_subgroup` generated by a set"]
 def closure (k : Set G) : Subgroup G :=
-  infₛ { K | k ⊆ K }
+  sInf { K | k ⊆ K }
 #align subgroup.closure Subgroup.closure
 #align add_subgroup.closure AddSubgroup.closure
 -/
@@ -1759,7 +1759,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_closure Subgroup.mem_closureₓ'. -/
 @[to_additive]
 theorem mem_closure {x : G} : x ∈ closure k ↔ ∀ K : Subgroup G, k ⊆ K → x ∈ K :=
-  mem_infₛ
+  mem_sInf
 #align subgroup.mem_closure Subgroup.mem_closure
 #align add_subgroup.mem_closure AddSubgroup.mem_closure
 
@@ -1798,7 +1798,7 @@ Case conversion may be inaccurate. Consider using '#align subgroup.closure_le Su
 /-- A subgroup `K` includes `closure k` if and only if it includes `k`. -/
 @[simp, to_additive "An additive subgroup `K` includes `closure k` if and only if it includes `k`"]
 theorem closure_le : closure k ≤ K ↔ k ⊆ K :=
-  ⟨Subset.trans subset_closure, fun h => infₛ_le h⟩
+  ⟨Subset.trans subset_closure, fun h => sInf_le h⟩
 #align subgroup.closure_le Subgroup.closure_le
 #align add_subgroup.closure_le AddSubgroup.closure_le
 
@@ -2004,17 +2004,17 @@ theorem closure_union (s t : Set G) : closure (s ∪ t) = closure s ⊔ closure
 #align subgroup.closure_union Subgroup.closure_union
 #align add_subgroup.closure_union AddSubgroup.closure_union
 
-/- warning: subgroup.closure_Union -> Subgroup.closure_unionᵢ is a dubious translation:
+/- warning: subgroup.closure_Union -> Subgroup.closure_iUnion is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (s : ι -> (Set.{u1} G)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => s i))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.closure.{u1} G _inst_1 (s i)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (s : ι -> (Set.{u1} G)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => s i))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.closure.{u1} G _inst_1 (s i)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (s : ι -> (Set.{u1} G)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => s i))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => Subgroup.closure.{u1} G _inst_1 (s i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.closure_Union Subgroup.closure_unionᵢₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (s : ι -> (Set.{u1} G)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => s i))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => Subgroup.closure.{u1} G _inst_1 (s i)))
+Case conversion may be inaccurate. Consider using '#align subgroup.closure_Union Subgroup.closure_iUnionₓ'. -/
 @[to_additive]
-theorem closure_unionᵢ {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, closure (s i) :=
-  (Subgroup.gi G).gc.l_supᵢ
-#align subgroup.closure_Union Subgroup.closure_unionᵢ
-#align add_subgroup.closure_Union AddSubgroup.closure_unionᵢ
+theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, closure (s i) :=
+  (Subgroup.gi G).gc.l_iSup
+#align subgroup.closure_Union Subgroup.closure_iUnion
+#align add_subgroup.closure_Union AddSubgroup.closure_iUnion
 
 /- warning: subgroup.closure_eq_bot_iff -> Subgroup.closure_eq_bot_iff is a dubious translation:
 lean 3 declaration is
@@ -2030,17 +2030,17 @@ theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥
 #align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iff
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
 
-/- warning: subgroup.supr_eq_closure -> Subgroup.supᵢ_eq_closure is a dubious translation:
+/- warning: subgroup.supr_eq_closure -> Subgroup.iSup_eq_closure is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (p : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => p i)) (Subgroup.closure.{u1} G _inst_1 (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (p i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (p : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => p i)) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (p i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (p : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => p i)) (Subgroup.closure.{u1} G _inst_1 (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (p i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.supr_eq_closure Subgroup.supᵢ_eq_closureₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} (p : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => p i)) (Subgroup.closure.{u1} G _inst_1 (Set.iUnion.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (p i))))
+Case conversion may be inaccurate. Consider using '#align subgroup.supr_eq_closure Subgroup.iSup_eq_closureₓ'. -/
 @[to_additive]
-theorem supᵢ_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
-    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_unionᵢ, closure_eq]
-#align subgroup.supr_eq_closure Subgroup.supᵢ_eq_closure
-#align add_subgroup.supr_eq_closure AddSubgroup.supᵢ_eq_closure
+theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
+    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
+#align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
+#align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
 
 /- warning: subgroup.mem_closure_singleton -> Subgroup.mem_closure_singleton is a dubious translation:
 lean 3 declaration is
@@ -2105,19 +2105,19 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 #align subgroup.closure_eq_top_of_mclosure_eq_top Subgroup.closure_eq_top_of_mclosure_eq_top
 #align add_subgroup.closure_eq_top_of_mclosure_eq_top AddSubgroup.closure_eq_top_of_mclosure_eq_top
 
-/- warning: subgroup.mem_supr_of_directed -> Subgroup.mem_supᵢ_of_directed is a dubious translation:
+/- warning: subgroup.mem_supr_of_directed -> Subgroup.mem_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374) K) -> (forall {x : G}, Iff (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 (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directedₓ'. -/
 @[to_additive]
-theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
-    {x : G} : x ∈ (supᵢ K : Subgroup G) ↔ ∃ i, x ∈ K i :=
+theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
+    {x : G} : x ∈ (iSup K : Subgroup G) ↔ ∃ i, x ∈ K i :=
   by
-  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_supᵢ K i) hi⟩
+  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup K i) hi⟩
   suffices x ∈ closure (⋃ i, (K i : Set G)) → ∃ i, x ∈ K i by
-    simpa only [closure_unionᵢ, closure_eq (K _)] using this
+    simpa only [closure_iUnion, closure_eq (K _)] using this
   refine' fun hx => closure_induction hx (fun _ => mem_Union.1) _ _ _
   · exact hι.elim fun i => ⟨i, (K i).one_mem⟩
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
@@ -2125,36 +2125,36 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
     exact ⟨k, mul_mem (hki hi) (hkj hj)⟩
   rintro _ ⟨i, hi⟩
   exact ⟨i, inv_mem hi⟩
-#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directed
-#align add_subgroup.mem_supr_of_directed AddSubgroup.mem_supᵢ_of_directed
+#align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directed
+#align add_subgroup.mem_supr_of_directed AddSubgroup.mem_iSup_of_directed
 
-/- warning: subgroup.coe_supr_of_directed -> Subgroup.coe_supᵢ_of_directed is a dubious translation:
+/- warning: subgroup.coe_supr_of_directed -> Subgroup.coe_iSup_of_directed is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.iUnion.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
-Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (iSup.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.iUnion.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directedₓ'. -/
 @[to_additive]
-theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
+theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subgroup G) : Set G) = ⋃ i, ↑(S i) :=
   Set.ext fun x => by simp [mem_supr_of_directed hS]
-#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directed
-#align add_subgroup.coe_supr_of_directed AddSubgroup.coe_supᵢ_of_directed
+#align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directed
+#align add_subgroup.coe_supr_of_directed AddSubgroup.coe_iSup_of_directed
 
-/- warning: subgroup.mem_Sup_of_directed_on -> Subgroup.mem_supₛ_of_directedOn is a dubious translation:
+/- warning: subgroup.mem_Sup_of_directed_on -> Subgroup.mem_sSup_of_directedOn is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
-Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725) K) -> (forall {x : G}, Iff (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 (SupSet.sSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_sSup_of_directedOnₓ'. -/
 @[to_additive]
-theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
-    {x : G} : x ∈ supₛ K ↔ ∃ s ∈ K, x ∈ s :=
+theorem mem_sSup_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
+    {x : G} : x ∈ sSup K ↔ ∃ s ∈ K, x ∈ s :=
   by
   haveI : Nonempty K := Kne.to_subtype
-  simp only [supₛ_eq_supᵢ', mem_supr_of_directed hK.directed_coe, SetCoe.exists, Subtype.coe_mk]
-#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOn
-#align add_subgroup.mem_Sup_of_directed_on AddSubgroup.mem_supₛ_of_directedOn
+  simp only [sSup_eq_iSup', mem_supr_of_directed hK.directed_coe, SetCoe.exists, Subtype.coe_mk]
+#align subgroup.mem_Sup_of_directed_on Subgroup.mem_sSup_of_directedOn
+#align add_subgroup.mem_Sup_of_directed_on AddSubgroup.mem_sSup_of_directedOn
 
 variable {N : Type _} [Group N] {P : Type _} [Group P]
 
@@ -2441,18 +2441,18 @@ theorem map_sup (H K : Subgroup G) (f : G →* N) : (H ⊔ K).map f = H.map f 
 #align subgroup.map_sup Subgroup.map_sup
 #align add_subgroup.map_sup AddSubgroup.map_sup
 
-/- warning: subgroup.map_supr -> Subgroup.map_supᵢ is a dubious translation:
+/- warning: subgroup.map_supr -> Subgroup.map_iSup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (supᵢ.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι s)) (supᵢ.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι (fun (i : ι) => Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (s i)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u1} G _inst_1)), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (iSup.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι s)) (iSup.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι (fun (i : ι) => Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (s i)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u2} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (supᵢ.{u2, u3} (Subgroup.{u2} G _inst_1) (CompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)) ι s)) (supᵢ.{u1, u3} (Subgroup.{u1} N _inst_4) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)) ι (fun (i : ι) => Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (s i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.map_supr Subgroup.map_supᵢₓ'. -/
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u2} G _inst_1)), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (iSup.{u2, u3} (Subgroup.{u2} G _inst_1) (CompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)) ι s)) (iSup.{u1, u3} (Subgroup.{u1} N _inst_4) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)) ι (fun (i : ι) => Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (s i)))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_supr Subgroup.map_iSupₓ'. -/
 @[to_additive]
-theorem map_supᵢ {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
-    (supᵢ s).map f = ⨆ i, (s i).map f :=
-  (gc_map_comap f).l_supᵢ
-#align subgroup.map_supr Subgroup.map_supᵢ
-#align add_subgroup.map_supr AddSubgroup.map_supᵢ
+theorem map_iSup {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
+    (iSup s).map f = ⨆ i, (s i).map f :=
+  (gc_map_comap f).l_iSup
+#align subgroup.map_supr Subgroup.map_iSup
+#align add_subgroup.map_supr AddSubgroup.map_iSup
 
 /- warning: subgroup.comap_sup_comap_le -> Subgroup.comap_sup_comap_le is a dubious translation:
 lean 3 declaration is
@@ -2467,18 +2467,18 @@ theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
 #align subgroup.comap_sup_comap_le Subgroup.comap_sup_comap_le
 #align add_subgroup.comap_sup_comap_le AddSubgroup.comap_sup_comap_le
 
-/- warning: subgroup.supr_comap_le -> Subgroup.supᵢ_comap_le is a dubious translation:
+/- warning: subgroup.supr_comap_le -> Subgroup.iSup_comap_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), 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)))) (supᵢ.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (supᵢ.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι s))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), 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)))) (iSup.{u1, u3} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (iSup.{u2, u3} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4))) ι s))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u1} N _inst_4)), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (supᵢ.{u2, u3} (Subgroup.{u2} G _inst_1) (CompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)) ι (fun (i : ι) => Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (supᵢ.{u1, u3} (Subgroup.{u1} N _inst_4) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)) ι s))
-Case conversion may be inaccurate. Consider using '#align subgroup.supr_comap_le Subgroup.supᵢ_comap_leₓ'. -/
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u1} N _inst_4)), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (iSup.{u2, u3} (Subgroup.{u2} G _inst_1) (CompleteLattice.toSupSet.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)) ι (fun (i : ι) => Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (s i))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (iSup.{u1, u3} (Subgroup.{u1} N _inst_4) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)) ι s))
+Case conversion may be inaccurate. Consider using '#align subgroup.supr_comap_le Subgroup.iSup_comap_leₓ'. -/
 @[to_additive]
-theorem supᵢ_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
-    (⨆ i, (s i).comap f) ≤ (supᵢ s).comap f :=
-  Monotone.le_map_supᵢ fun _ _ => comap_mono
-#align subgroup.supr_comap_le Subgroup.supᵢ_comap_le
-#align add_subgroup.supr_comap_le AddSubgroup.supᵢ_comap_le
+theorem iSup_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
+    (⨆ i, (s i).comap f) ≤ (iSup s).comap f :=
+  Monotone.le_map_iSup fun _ _ => comap_mono
+#align subgroup.supr_comap_le Subgroup.iSup_comap_le
+#align add_subgroup.supr_comap_le AddSubgroup.iSup_comap_le
 
 /- warning: subgroup.comap_inf -> Subgroup.comap_inf is a dubious translation:
 lean 3 declaration is
@@ -2492,18 +2492,18 @@ theorem comap_inf (H K : Subgroup N) (f : G →* N) : (H ⊓ K).comap f = H.coma
 #align subgroup.comap_inf Subgroup.comap_inf
 #align add_subgroup.comap_inf AddSubgroup.comap_inf
 
-/- warning: subgroup.comap_infi -> Subgroup.comap_infᵢ is a dubious translation:
+/- warning: subgroup.comap_infi -> Subgroup.comap_iInf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (infᵢ.{u2, u3} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) ι s)) (infᵢ.{u1, u3} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {ι : Sort.{u3}} (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : ι -> (Subgroup.{u2} N _inst_4)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (iInf.{u2, u3} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) ι s)) (iInf.{u1, u3} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) ι (fun (i : ι) => Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (s i)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u1} N _inst_4)), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (infᵢ.{u1, u3} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSetSubgroup.{u1} N _inst_4) ι s)) (infᵢ.{u2, u3} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSetSubgroup.{u2} G _inst_1) ι (fun (i : ι) => Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (s i)))
-Case conversion may be inaccurate. Consider using '#align subgroup.comap_infi Subgroup.comap_infᵢₓ'. -/
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {ι : Sort.{u3}} (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : ι -> (Subgroup.{u1} N _inst_4)), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (iInf.{u1, u3} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSetSubgroup.{u1} N _inst_4) ι s)) (iInf.{u2, u3} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSetSubgroup.{u2} G _inst_1) ι (fun (i : ι) => Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (s i)))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_infi Subgroup.comap_iInfₓ'. -/
 @[to_additive]
-theorem comap_infᵢ {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
-    (infᵢ s).comap f = ⨅ i, (s i).comap f :=
-  (gc_map_comap f).u_infᵢ
-#align subgroup.comap_infi Subgroup.comap_infᵢ
-#align add_subgroup.comap_infi AddSubgroup.comap_infᵢ
+theorem comap_iInf {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
+    (iInf s).comap f = ⨅ i, (s i).comap f :=
+  (gc_map_comap f).u_iInf
+#align subgroup.comap_infi Subgroup.comap_iInf
+#align add_subgroup.comap_infi AddSubgroup.comap_iInf
 
 /- warning: subgroup.map_inf_le -> Subgroup.map_inf_le is a dubious translation:
 lean 3 declaration is
@@ -3897,7 +3897,7 @@ but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{u1} G} {x : G}, Iff (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (Group.conjugatesOfSet.{u1} G _inst_1 s)) (Exists.{succ u1} G (fun (a : G) => And (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) a s) (IsConj.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) a x)))
 Case conversion may be inaccurate. Consider using '#align group.mem_conjugates_of_set_iff Group.mem_conjugatesOfSet_iffₓ'. -/
 theorem mem_conjugatesOfSet_iff {x : G} : x ∈ conjugatesOfSet s ↔ ∃ a ∈ s, IsConj a x :=
-  Set.mem_unionᵢ₂
+  Set.mem_iUnion₂
 #align group.mem_conjugates_of_set_iff Group.mem_conjugatesOfSet_iff
 
 #print Group.subset_conjugatesOfSet /-
@@ -3908,7 +3908,7 @@ theorem subset_conjugatesOfSet : s ⊆ conjugatesOfSet s := fun (x : G) (h : x 
 
 #print Group.conjugatesOfSet_mono /-
 theorem conjugatesOfSet_mono {s t : Set G} (h : s ⊆ t) : conjugatesOfSet s ⊆ conjugatesOfSet t :=
-  Set.bunionᵢ_subset_bunionᵢ_left h
+  Set.biUnion_subset_biUnion_left h
 #align group.conjugates_of_set_mono Group.conjugatesOfSet_mono
 -/
 
@@ -3933,7 +3933,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align group.conjugates_of_set_subset Group.conjugatesOfSet_subsetₓ'. -/
 theorem conjugatesOfSet_subset {s : Set G} {N : Subgroup G} [N.Normal] (h : s ⊆ N) :
     conjugatesOfSet s ⊆ N :=
-  Set.unionᵢ₂_subset fun x H => conjugates_subset_normal (h H)
+  Set.iUnion₂_subset fun x H => conjugates_subset_normal (h H)
 #align group.conjugates_of_set_subset Group.conjugatesOfSet_subset
 
 /- warning: group.conj_mem_conjugates_of_set -> Group.conj_mem_conjugatesOfSet is a dubious translation:
@@ -4048,13 +4048,13 @@ theorem normalClosure_mono {s t : Set G} (h : s ⊆ t) : normalClosure s ≤ nor
   normalClosure_le_normal (Set.Subset.trans h subset_normalClosure)
 #align subgroup.normal_closure_mono Subgroup.normalClosure_mono
 
-#print Subgroup.normalClosure_eq_infᵢ /-
-theorem normalClosure_eq_infᵢ :
+#print Subgroup.normalClosure_eq_iInf /-
+theorem normalClosure_eq_iInf :
     normalClosure s = ⨅ (N : Subgroup G) (_ : Normal N) (hs : s ⊆ N), N :=
-  le_antisymm (le_infᵢ fun N => le_infᵢ fun hN => le_infᵢ normal_closure_le_normal)
-    (infᵢ_le_of_le (normalClosure s)
-      (infᵢ_le_of_le (by infer_instance) (infᵢ_le_of_le subset_normalClosure le_rfl)))
-#align subgroup.normal_closure_eq_infi Subgroup.normalClosure_eq_infᵢ
+  le_antisymm (le_iInf fun N => le_iInf fun hN => le_iInf normal_closure_le_normal)
+    (iInf_le_of_le (normalClosure s)
+      (iInf_le_of_le (by infer_instance) (iInf_le_of_le subset_normalClosure le_rfl)))
+#align subgroup.normal_closure_eq_infi Subgroup.normalClosure_eq_iInf
 -/
 
 #print Subgroup.normalClosure_eq_self /-
@@ -4141,19 +4141,19 @@ theorem normalCore_mono {H K : Subgroup G} (h : H ≤ K) : H.normalCore ≤ K.no
   normal_le_normalCore.mpr (H.normalCore_le.trans h)
 #align subgroup.normal_core_mono Subgroup.normalCore_mono
 
-/- warning: subgroup.normal_core_eq_supr -> Subgroup.normalCore_eq_supᵢ is a dubious translation:
+/- warning: subgroup.normal_core_eq_supr -> Subgroup.normalCore_eq_iSup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (supᵢ.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (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)))) N H) (fun (hs : 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)))) N H) => N))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (iSup.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (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)))) N H) (fun (hs : 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)))) N H) => N))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (supᵢ.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (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))))) N H) (fun (hs : 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))))) N H) => N))))
-Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_supᵢₓ'. -/
-theorem normalCore_eq_supᵢ (H : Subgroup G) :
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (iSup.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => iSup.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (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))))) N H) (fun (hs : 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))))) N H) => N))))
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_iSupₓ'. -/
+theorem normalCore_eq_iSup (H : Subgroup G) :
     H.normalCore = ⨆ (N : Subgroup G) (_ : Normal N) (hs : N ≤ H), N :=
   le_antisymm
-    (le_supᵢ_of_le H.normalCore
-      (le_supᵢ_of_le H.normalCore_normal (le_supᵢ_of_le H.normalCore_le le_rfl)))
-    (supᵢ_le fun N => supᵢ_le fun hN => supᵢ_le normal_le_normal_core.mpr)
-#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_supᵢ
+    (le_iSup_of_le H.normalCore
+      (le_iSup_of_le H.normalCore_normal (le_iSup_of_le H.normalCore_le le_rfl)))
+    (iSup_le fun N => iSup_le fun hN => iSup_le normal_le_normal_core.mpr)
+#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_iSup
 
 #print Subgroup.normalCore_eq_self /-
 @[simp]
Diff
@@ -2109,7 +2109,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10376 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10376) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10372 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
@@ -2132,7 +2132,7 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10625 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10625) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10621 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
@@ -2145,7 +2145,7 @@ theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10727 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10727) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10723 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
@@ -2829,7 +2829,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14244 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14244) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14259 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14259)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14222 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14222 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14240 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14240 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14255 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14255 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
Diff
@@ -3137,7 +3137,7 @@ end Subgroup
 namespace AddSubgroup
 
 #print AddSubgroup.Normal /-
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`conj_mem] [] -/
 /-- An add_subgroup is normal if whenever `n ∈ H`, then `g + n - g ∈ H` for every `g : G` -/
 structure Normal (H : AddSubgroup A) : Prop where
   conj_mem : ∀ n, n ∈ H → ∀ g : A, g + n + -g ∈ H
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
+! leanprover-community/mathlib commit 6b60020790e39e77bfd633ba3d5562ff82e52c79
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -368,7 +368,7 @@ include hSG
 #print SubgroupClass.subtype /-
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an additive subgroup of `add_group` `G` to `G`."]
-def subtype : H →* G :=
+protected def subtype : H →* G :=
   ⟨coe, rfl, fun _ _ => rfl⟩
 #align subgroup_class.subtype SubgroupClass.subtype
 #align add_subgroup_class.subtype AddSubgroupClass.subtype
@@ -381,7 +381,7 @@ but is expected to have type
   forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_subtype SubgroupClass.coeSubtypeₓ'. -/
 @[simp, to_additive]
-theorem coeSubtype : (subtype H : H → G) = coe :=
+theorem coeSubtype : (SubgroupClass.subtype H : H → G) = coe :=
   rfl
 #align subgroup_class.coe_subtype SubgroupClass.coeSubtype
 #align add_subgroup_class.coe_subtype AddSubgroupClass.coeSubtype
@@ -396,7 +396,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_pow SubgroupClass.coe_powₓ'. -/
 @[simp, norm_cast, to_additive coe_smul]
 theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = x ^ n :=
-  (subtype H : H →* G).map_pow _ _
+  (SubgroupClass.subtype H : H →* G).map_pow _ _
 #align subgroup_class.coe_pow SubgroupClass.coe_pow
 #align add_subgroup_class.coe_smul AddSubgroupClass.coe_nsmul
 
@@ -408,7 +408,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_zpow SubgroupClass.coe_zpowₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = x ^ n :=
-  (subtype H : H →* G).map_zpow _ _
+  (SubgroupClass.subtype H : H →* G).map_zpow _ _
 #align subgroup_class.coe_zpow SubgroupClass.coe_zpow
 #align add_subgroup_class.coe_zsmul AddSubgroupClass.coe_zsmul
 
@@ -501,7 +501,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup_class.subtype_comp_inclusion SubgroupClass.subtype_comp_inclusionₓ'. -/
 @[simp, to_additive]
 theorem subtype_comp_inclusion {H K : S} (hH : H ≤ K) :
-    (subtype K).comp (inclusion hH) = subtype H :=
+    (SubgroupClass.subtype K).comp (inclusion hH) = SubgroupClass.subtype H :=
   by
   ext
   simp only [MonoidHom.comp_apply, coeSubtype, coe_inclusion]
@@ -1243,7 +1243,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align subgroup.subtype Subgroup.subtypeₓ'. -/
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an `add_subgroup` of `add_group` `G` to `G`."]
-def subtype : H →* G :=
+protected def subtype : H →* G :=
   ⟨coe, rfl, fun _ _ => rfl⟩
 #align subgroup.subtype Subgroup.subtype
 #align add_subgroup.subtype AddSubgroup.subtype
@@ -1267,7 +1267,7 @@ but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.subtype_injective Subgroup.subtype_injectiveₓ'. -/
 @[to_additive]
-theorem subtype_injective : Function.Injective (subtype H) :=
+theorem subtype_injective : Injective (Subgroup.subtype H) :=
   Subtype.coe_injective
 #align subgroup.subtype_injective Subgroup.subtype_injective
 #align add_subgroup.subtype_injective AddSubgroup.subtype_injective
Diff
@@ -2109,7 +2109,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10356 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10358 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10356 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10358) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10376 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10374 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10376) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
@@ -2132,7 +2132,7 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10605 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10607 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10605 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10607) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10625 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10623 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10625) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
@@ -2145,7 +2145,7 @@ theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10707 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10709 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10707 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10709) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10727 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10725 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10727) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
@@ -2829,7 +2829,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14206 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14208 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14206 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14208) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14239 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14241 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14239 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14241)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14244 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14242 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14244) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14259 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14257 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14259)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
Diff
@@ -378,7 +378,7 @@ def subtype : H →* G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} (H : S) [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6], Eq.{succ u1} ((fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_subtype SubgroupClass.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : (subtype H : H → G) = coe :=
@@ -429,7 +429,7 @@ def inclusion {H K : S} (h : H ≤ K) : H →* K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H H (le_rfl.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H)) x) x
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))))) (SubgroupClass.inclusion.{u2, u1} G _inst_1 S _inst_6 hSG H H (le_rfl.{u1} S (PartialOrder.toPreorder.{u1} S (SetLike.instPartialOrder.{u1, u2} S G _inst_6)) H)) x) x
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))))) (SubgroupClass.inclusion.{u2, u1} G _inst_1 S _inst_6 hSG H H (le_rfl.{u1} S (PartialOrder.toPreorder.{u1} S (SetLike.instPartialOrder.{u1, u2} S G _inst_6)) H)) x) x
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_self SubgroupClass.inclusion_selfₓ'. -/
 @[simp, to_additive]
 theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
@@ -443,7 +443,7 @@ theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K) x (h x hx))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_mk SubgroupClass.inclusion_mkₓ'. -/
 @[simp, to_additive]
 theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ :=
@@ -455,7 +455,7 @@ theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) hx)) x
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_right SubgroupClass.inclusion_rightₓ'. -/
 @[to_additive]
 theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x :=
@@ -469,7 +469,7 @@ theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) K L) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusionₓ'. -/
 @[simp]
 theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
@@ -483,7 +483,7 @@ theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (a : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) a)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inclusion SubgroupClass.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -1252,7 +1252,7 @@ def subtype : H →* G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (forall (ᾰ : 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 H)), (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 H)) => 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (forall (ᾰ : 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 H)), (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 H)) => 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_subtype Subgroup.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : ⇑H.Subtype = coe :=
@@ -1264,7 +1264,7 @@ theorem coeSubtype : ⇑H.Subtype = coe :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, succ 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)) H) 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.subtype_injective Subgroup.subtype_injectiveₓ'. -/
 @[to_additive]
 theorem subtype_injective : Function.Injective (subtype H) :=
@@ -1289,7 +1289,7 @@ def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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)))) H K} (a : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) a)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_inclusion Subgroup.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -1303,7 +1303,7 @@ theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Function.Injective.{succ u1, succ 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)) H) (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)) K) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_injective Subgroup.inclusion_injectiveₓ'. -/
 @[to_additive]
 theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h :=
@@ -2109,7 +2109,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10340 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10342 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10340 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10342) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10356 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10358 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10356 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10358) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
@@ -2132,7 +2132,7 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10589 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10591 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10589 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10591) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10605 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10607 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10605 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10607) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
@@ -2145,7 +2145,7 @@ theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10691 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10693 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10691 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10693) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10707 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10709 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10707 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10709) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
@@ -2174,7 +2174,7 @@ def comap {N : Type _} [Group N] (f : G →* N) (H : Subgroup N) : Subgroup G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4) K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_comap Subgroup.coe_comapₓ'. -/
 @[simp, to_additive]
 theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻¹' K :=
@@ -2186,7 +2186,7 @@ theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (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 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (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 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) K)
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_comap Subgroup.mem_comapₓ'. -/
 @[simp, to_additive]
 theorem mem_comap {K : Subgroup N} {f : G →* N} {x : G} : x ∈ K.comap f ↔ f x ∈ K :=
@@ -2243,7 +2243,7 @@ def map (f : G →* N) (H : Subgroup G) : Subgroup N :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_map Subgroup.coe_mapₓ'. -/
 @[simp, to_additive]
 theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
@@ -2255,7 +2255,7 @@ theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) (fun (H : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y)))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map Subgroup.mem_mapₓ'. -/
 @[simp, to_additive]
 theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃ x ∈ K, f x = y :=
@@ -2267,7 +2267,7 @@ theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {K : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) -> (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {K : Subgroup.{u2} G _inst_1} {x : G}, (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) -> (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {K : Subgroup.{u2} G _inst_1} {x : G}, (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) -> (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_of_mem Subgroup.mem_map_of_memₓ'. -/
 @[to_additive]
 theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) : f x ∈ K.map f :=
@@ -2279,7 +2279,7 @@ theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1) (x : 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)) K), Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) x)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1) (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1) (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
 Case conversion may be inaccurate. Consider using '#align subgroup.apply_coe_mem_map Subgroup.apply_coe_mem_mapₓ'. -/
 @[to_additive]
 theorem apply_coe_mem_map (f : G →* N) (K : Subgroup G) (x : K) : f x ∈ K.map f :=
@@ -2337,7 +2337,7 @@ theorem map_one_eq_bot : K.map (1 : G →* N) = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))} {K : Subgroup.{u1} G _inst_1} {x : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => N -> G) (MulEquiv.hasCoeToFun.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) x) K)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))} {K : Subgroup.{u2} G _inst_1} {x : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) x) (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f) x) K)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))} {K : Subgroup.{u2} G _inst_1} {x : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) x) (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f) x) K)
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_equiv Subgroup.mem_map_equivₓ'. -/
 @[to_additive]
 theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
@@ -2350,7 +2350,7 @@ theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {K : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {K : Subgroup.{u2} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {K : Subgroup.{u2} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_iff_mem Subgroup.mem_map_iff_memₓ'. -/
 @[to_additive]
 theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup G} {x : G} :
@@ -2521,7 +2521,7 @@ theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_eq Subgroup.map_inf_eqₓ'. -/
 @[to_additive]
 theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f) :
@@ -2548,7 +2548,7 @@ theorem map_bot (f : G →* N) : (⊥ : Subgroup G).map f = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (Top.top.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasTop.{u2} N _inst_4)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_top_of_surjective Subgroup.map_top_of_surjectiveₓ'. -/
 @[simp, to_additive]
 theorem map_top_of_surjective (f : G →* N) (h : Function.Surjective f) : Subgroup.map f ⊤ = ⊤ :=
@@ -2632,7 +2632,7 @@ theorem comap_inclusion_subgroupOf {K₁ K₂ : Subgroup G} (h : K₁ ≤ K₂)
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (HasLiftT.mk.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (CoeTCₓ.coe.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (SetLike.Set.hasCoeT.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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)) K) 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) -> 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{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 K))) (SetLike.coe.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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 K)) 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 K)) 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 K)) (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 K)) (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 K)) => (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 K)) => 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 K)) 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 K)) (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 K)) 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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 K)) 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 K)) (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 K)) 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 K)) (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 K)) 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 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{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 K))) (SetLike.coe.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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 K)) 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 K)) 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 K)) (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 K)) (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 K)) => (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 K)) => 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 K)) 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 K)) (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 K)) 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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 K)) 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 K)) (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 K)) 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 K)) (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 K)) 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 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_subgroup_of Subgroup.coe_subgroupOfₓ'. -/
 @[to_additive]
 theorem coe_subgroupOf (H K : Subgroup G) : (H.subgroupOf K : Set K) = K.Subtype ⁻¹' H :=
@@ -2829,7 +2829,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14174 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14174 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14192 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14194 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14192 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14194) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14207 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14209 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14207 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14209)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14206 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14208 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14206 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14208) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14224 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14226) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14239 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14241 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14239 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14241)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
@@ -3825,7 +3825,7 @@ instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommu
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => G' -> G) (MonoidHom.hasCoeToFun.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
 but is expected to have type
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutativeₓ'. -/
 @[to_additive]
 theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutative] :
@@ -4190,7 +4190,7 @@ def range (f : G →* N) : Subgroup N :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Set.range.{u2, succ u1} N G (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range MonoidHom.coe_rangeₓ'. -/
 @[simp, to_additive]
 theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
@@ -4202,7 +4202,7 @@ theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Exists.{succ u1} G (fun (x : G) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_range MonoidHom.mem_rangeₓ'. -/
 @[simp, to_additive]
 theorem mem_range {f : G →* N} {y : N} : y ∈ f.range ↔ ∃ x, f x = y :=
@@ -4253,7 +4253,7 @@ def rangeRestrict (f : G →* N) : G →* f.range :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f) g)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f g)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f g :=
@@ -4265,7 +4265,7 @@ theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{max (succ u1) (succ u2)} (G -> N) (Function.comp.{succ u1, succ u2, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem coe_comp_rangeRestrict (f : G →* N) :
@@ -4290,7 +4290,7 @@ theorem subtype_comp_rangeRestrict (f : G →* N) : f.range.Subtype.comp f.range
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Function.Surjective.{succ u1, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjectiveₓ'. -/
 @[to_additive]
 theorem rangeRestrict_surjective (f : G →* N) : Function.Surjective f.range_restrict :=
@@ -4314,7 +4314,7 @@ theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).ran
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjectiveₓ'. -/
 @[to_additive]
 theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
@@ -4327,7 +4327,7 @@ theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjectiveₓ'. -/
 /-- The range of a surjective monoid homomorphism is the whole of the codomain. -/
 @[to_additive "The range of a surjective `add_monoid` homomorphism is the whole of the codomain."]
@@ -4381,7 +4381,7 @@ theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} [_inst_6 : Group.{u1} G₁] [_inst_7 : Group.{u2} G₂] {K : Subgroup.{u2} G₂ _inst_7} (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (h : LE.le.{u2} (Subgroup.{u2} G₂ _inst_7) (Preorder.toLE.{u2} (Subgroup.{u2} G₂ _inst_7) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G₂ _inst_7) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)))) (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u2} (Subgroup.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u2} G₂ _inst_7 (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u1, u2} G₁ _inst_6 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K) (MonoidHom.codRestrict.{u1, u2, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7))) (Subgroup.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (SubgroupClass.to_submonoidClass.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (Subgroup.subgroupClass.{u2} G₂ _inst_7)) f K (fun (x : G₁) => h (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x) (Exists.intro.{succ u1} G₁ (fun (y : G₁) => Eq.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x)) x (rfl.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x))))))
 but is expected to have type
-  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
+  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_leₓ'. -/
 @[to_additive]
 theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
@@ -4398,7 +4398,7 @@ theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂]
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse MonoidHom.ofLeftInverseₓ'. -/
 /-- Computable alternative to `monoid_hom.of_injective`. -/
 @[to_additive "Computable alternative to `add_monoid_hom.of_injective`."]
@@ -4418,7 +4418,7 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
@@ -4431,7 +4431,7 @@ theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInve
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)), Eq.{succ u1} G (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> G) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h)) x) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) x))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
@@ -4444,7 +4444,7 @@ theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.Lef
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective MonoidHom.ofInjectiveₓ'. -/
 /-- The range of an injective group homomorphism is isomorphic to its domain. -/
 @[to_additive "The range of an injective additive group homomorphism is isomorphic to its\ndomain."]
@@ -4461,7 +4461,7 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) {x : G}, Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofInjective.{u1, u2} G _inst_1 N _inst_4 f hf) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective_apply MonoidHom.ofInjective_applyₓ'. -/
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
@@ -4494,7 +4494,7 @@ def ker (f : G →* M) : Subgroup G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6)))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) _inst_6))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) _inst_6))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_ker MonoidHom.mem_kerₓ'. -/
 @[to_additive]
 theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
@@ -4506,7 +4506,7 @@ theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Set.preimage.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f) (Singleton.singleton.{u2, u2} M (Set.{u2} M) (Set.hasSingleton.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6))))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_ker MonoidHom.coe_kerₓ'. -/
 @[to_additive]
 theorem coe_ker (f : G →* M) : (f.ker : Set G) = (f : G → M) ⁻¹' {1} :=
@@ -4532,7 +4532,7 @@ theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f y)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) y) x) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_iff MonoidHom.eq_iffₓ'. -/
 @[to_additive]
 theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
@@ -4595,7 +4595,7 @@ theorem ker_restrict (f : G →* N) : (f.restrict K).ker = f.ker.subgroupOf K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.Mem.{u2, u3} N S (SetLike.hasMem.{u3, u2} S N _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (coeSort.{succ u3, succ (succ u2)} S Type.{u2} (SetLike.hasCoeToSort.{u3, u2} S N _inst_7) s) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrictₓ'. -/
 @[simp, to_additive]
 theorem ker_codRestrict {S} [SetLike S N] [SubmonoidClass S N] (f : G →* N) (s : S)
@@ -4644,7 +4644,7 @@ theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Function.Injective.{succ u1, succ u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
@@ -4744,7 +4744,7 @@ theorem eqLocus_same (f : G →* N) : f.eqLocus f = ⊤ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {s : Set.{u1} G}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_on_closure MonoidHom.eqOn_closureₓ'. -/
 /-- If two monoid homomorphisms are equal on a set, then they are equal on its subgroup closure. -/
 @[to_additive
@@ -4758,7 +4758,7 @@ theorem eqOn_closure {f g : G →* M} {s : Set G} (h : Set.EqOn f g s) : Set.EqO
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_topₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) : f = g :=
@@ -4770,7 +4770,7 @@ theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {s : Set.{u1} G}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 s) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) -> (forall {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_dense MonoidHom.eq_of_eqOn_denseₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_dense {s : Set G} (hs : closure s = ⊤) {f g : G →* M} (h : s.EqOn f g) : f = g :=
@@ -4784,7 +4784,7 @@ end EqLocus
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u2} N), 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)))) (Subgroup.closure.{u1} G _inst_1 (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} N _inst_4 s))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_leₓ'. -/
 @[to_additive]
 theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) ≤ (closure s).comap f :=
@@ -4796,7 +4796,7 @@ theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) 
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u1} G), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.closure.{u2} N _inst_4 (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_closure MonoidHom.map_closureₓ'. -/
 /-- The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup
 generated by the image of the set. -/
@@ -4818,7 +4818,7 @@ variable {N : Type _} [Group N] (H : Subgroup G)
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Subgroup.Normal.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.normal.map Subgroup.Normal.mapₓ'. -/
 @[to_additive]
 theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function.Surjective f) :
@@ -4846,7 +4846,7 @@ theorem map_eq_bot_iff {f : G →* N} : H.map f = ⊥ ↔ H ≤ f.ker :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff_of_injective Subgroup.map_eq_bot_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_eq_bot_iff_of_injective {f : G →* N} (hf : Function.Injective f) :
@@ -4968,7 +4968,7 @@ theorem map_comap_eq_self {f : G →* N} {H : Subgroup N} (h : H ≤ f.range) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjectiveₓ'. -/
 @[to_additive]
 theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective f) (H : Subgroup N) :
@@ -4994,7 +4994,7 @@ theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
@@ -5007,7 +5007,7 @@ theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (LT.lt.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLT.{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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LT.lt.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLT.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
@@ -5019,7 +5019,7 @@ theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} N _inst_4) (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective Subgroup.comap_injectiveₓ'. -/
 @[to_additive]
 theorem comap_injective {f : G →* N} (h : Function.Surjective f) : Function.Injective (comap f) :=
@@ -5043,7 +5043,7 @@ theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) : co
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injectiveₓ'. -/
 @[to_additive]
 theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
@@ -5105,7 +5105,7 @@ theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} : H.map f = f.range ↔
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
@@ -5130,7 +5130,7 @@ theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} G _inst_1) (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_injective Subgroup.map_injectiveₓ'. -/
 @[to_additive]
 theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) :=
@@ -5142,7 +5142,7 @@ theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injec
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.RightInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 g H))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverseₓ'. -/
 @[to_additive]
 theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
@@ -5171,7 +5171,7 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) -> 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.hasTop.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_topₓ'. -/
 @[to_additive]
 theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹' s) = ⊤ :=
@@ -5204,7 +5204,7 @@ theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq Subgroup.comap_sup_eqₓ'. -/
 @[to_additive]
 theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
@@ -5246,7 +5246,7 @@ theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjectiveₓ'. -/
 /-- A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
 use `mul_equiv.subgroup_map` for better definitional equalities. -/
@@ -5262,7 +5262,7 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (h : 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)) H), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 N _inst_4 H f hf) h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) h))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
@@ -5275,7 +5275,7 @@ theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Func
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Surjective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjectiveₓ'. -/
 /-- The preimage of the normalizer is equal to the normalizer of the preimage of a surjective
   function. -/
@@ -5297,7 +5297,7 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H : Subgroup G)
@@ -5353,7 +5353,7 @@ theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Bijective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_normalizer_eq_of_bijective Subgroup.map_normalizer_eq_of_bijectiveₓ'. -/
 /-- The image of the normalizer is equal to the normalizer of the image of a bijective
   function. -/
@@ -5377,7 +5377,7 @@ variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAuxₓ'. -/
 /-- Auxiliary definition used to define `lift_of_right_inverse` -/
 @[to_additive "Auxiliary definition used to define `lift_of_right_inverse`"]
@@ -5398,7 +5398,7 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.liftOfRightInverseAux.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) g x)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5416,7 +5416,7 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverseₓ'. -/
 /-- `lift_of_right_inverse f hf g hg` is the unique group homomorphism `φ`
 
@@ -5456,7 +5456,7 @@ def liftOfRightInverse (hf : Function.RightInverse f_inv f) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjectiveₓ'. -/
 /-- A non-computable version of `monoid_hom.lift_of_right_inverse` for when no computable right
 inverse is available, that uses `function.surj_inv`. -/
@@ -5473,7 +5473,7 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max 1 (succ u3) (succ u1), max (succ u1) (succ u3)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (fun (x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) => G₁ -> G₃) (coeFnTrans.{max (succ u1) (succ u3), max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBaseAux.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))))) g x)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
@@ -5487,7 +5487,7 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) ((fun (a : Sort.{max 1 (succ u3) (succ u1)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} a b] => self.0) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (HasLiftT.mk.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (CoeTCₓ.coe.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBase.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)))))) g)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_compₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
@@ -5500,7 +5500,7 @@ theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) h (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) g hg)))
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverseₓ'. -/
 @[to_additive]
 theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5593,7 +5593,7 @@ def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), Function.Surjective.{succ u1, succ u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (fun (_x : MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H))) (MonoidHom.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 f H))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjectiveₓ'. -/
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
@@ -5642,7 +5642,7 @@ def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G')
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : 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)) H), Eq.{succ u2} G' ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H) g)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) => G -> G') (MulEquiv.hasCoeToFun.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) e ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) g))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => G') _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => G') _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
 Case conversion may be inaccurate. Consider using '#align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
@@ -5655,7 +5655,7 @@ theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)), Eq.{succ 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)) H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) -> (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)) H)) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (MulEquiv.symm.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Iff.mp (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) H) (SetLike.mem_coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1) H (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g))) (Iff.mp (Membership.Mem.{u2, u2} G' (Set.{u2} G') (Set.hasMem.{u2} G') ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g) (Set.image.{u1, u2} G G' (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} G G') (fun (_x : Equiv.{succ u1, succ u2} G G') => G -> G') (Equiv.hasCoeToFun.{succ u1, succ u2} G G') (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} G' G) (fun (_x : Equiv.{succ u2, succ u1} G' G) => G' -> G) (Equiv.hasCoeToFun.{succ u2, succ u1} G' G) (Equiv.symm.{succ u1, succ u2} G G' (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Set.mem_image_equiv.{u1, u2} G G' ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Subtype.property.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) g))))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
 Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
Diff
@@ -378,7 +378,7 @@ def subtype : H →* G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} (H : S) [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6], Eq.{succ u1} ((fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SubgroupClass.subtype.{u1, u2} G _inst_1 S H _inst_6 hSG)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} (H : S) [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6], Eq.{succ u2} (forall (a : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) a) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => G) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) G (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) (SubgroupClass.subtype.{u2, u1} G _inst_1 S H _inst_6 hSG)) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u1, u2} S G _inst_6 H)))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_subtype SubgroupClass.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : (subtype H : H → G) = coe :=
@@ -429,7 +429,7 @@ def inclusion {H K : S} (h : H ≤ K) : H →* K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H H (le_rfl.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H)) x) x
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))))) (SubgroupClass.inclusion.{u2, u1} G _inst_1 S _inst_6 hSG H H (le_rfl.{u1} S (PartialOrder.toPreorder.{u1} S (SetLike.instPartialOrder.{u1, u2} S G _inst_6)) H)) x) x
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u2, u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (Group.toDivInvMonoid.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)) (SubgroupClass.toGroup.{u2, u1} G _inst_1 S H _inst_6 hSG))))))) (SubgroupClass.inclusion.{u2, u1} G _inst_1 S _inst_6 hSG H H (le_rfl.{u1} S (PartialOrder.toPreorder.{u1} S (SetLike.instPartialOrder.{u1, u2} S G _inst_6)) H)) x) x
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_self SubgroupClass.inclusion_selfₓ'. -/
 @[simp, to_additive]
 theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
@@ -443,7 +443,7 @@ theorem inclusion_self (x : H) : inclusion le_rfl x = x :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K) x (h x hx))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (x : G) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) x hx)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K) x (h x hx))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_mk SubgroupClass.inclusion_mkₓ'. -/
 @[simp, to_additive]
 theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx⟩ = ⟨x, h hx⟩ :=
@@ -455,7 +455,7 @@ theorem inclusion_mk {h : H ≤ K} (x : G) (hx : x ∈ H) : inclusion h ⟨x, hx
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (hx : Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) x) hx)) x
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] (h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (hx : Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) H), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) x) hx)) x
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_right SubgroupClass.inclusion_rightₓ'. -/
 @[to_additive]
 theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h ⟨x, hx⟩ = x :=
@@ -469,7 +469,7 @@ theorem inclusion_right (h : H ≤ K) (x : K) (hx : (x : G) ∈ H) : inclusion h
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) K L) (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) L) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} {K : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {L : S} (hHK : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K) (hKL : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) K L) (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG K L hKL) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K hHK) x)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x L)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S L _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H L (LE.le.trans.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6)) H K L hHK hKL)) x)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.inclusion_inclusion SubgroupClass.inclusion_inclusionₓ'. -/
 @[simp]
 theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
@@ -483,7 +483,7 @@ theorem inclusion_inclusion {L : S} (hHK : H ≤ K) (hKL : K ≤ L) (x : H) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.partialOrder.{u2, u1} S G _inst_6))) H K} (a : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x K))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) => (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) -> (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K)) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (Group.toDivInvMonoid.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) K) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S G _inst_6) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H))))) a)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {H : S} {K : S} {h : LE.le.{u2} S (Preorder.toLE.{u2} S (PartialOrder.toPreorder.{u2} S (SetLike.instPartialOrder.{u2, u1} S G _inst_6))) H K} (a : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 K)) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) => Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG))))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG)))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x H)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S H _inst_6 hSG)))) (Monoid.toMulOneClass.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (DivInvMonoid.toMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (Group.toDivInvMonoid.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_6) x K)) (SubgroupClass.toGroup.{u1, u2} G _inst_1 S K _inst_6 hSG))))))) (SubgroupClass.inclusion.{u1, u2} G _inst_1 S _inst_6 hSG H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u2, u1} S G _inst_6 H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inclusion SubgroupClass.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -601,14 +601,12 @@ theorem mk_le_mk {s t : Set G} (h_one) (h_mul) (h_inv) (h_one') (h_mul') (h_inv'
 #align subgroup.mk_le_mk Subgroup.mk_le_mk
 #align add_subgroup.mk_le_mk AddSubgroup.mk_le_mk
 
-#print Subgroup.Simps.coe /-
 /-- See Note [custom simps projection] -/
 @[to_additive "See Note [custom simps projection]"]
 def Simps.coe (S : Subgroup G) : Set G :=
   S
 #align subgroup.simps.coe Subgroup.Simps.coe
 #align add_subgroup.simps.coe AddSubgroup.Simps.coe
--/
 
 initialize_simps_projections Subgroup (carrier → coe)
 
@@ -1254,7 +1252,7 @@ def subtype : H →* G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (forall (ᾰ : 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 H)), (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 H)) => 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (forall (ᾰ : 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 H)), (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 H)) => 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_subtype Subgroup.coeSubtypeₓ'. -/
 @[simp, to_additive]
 theorem coeSubtype : ⇑H.Subtype = coe :=
@@ -1266,7 +1264,7 @@ theorem coeSubtype : ⇑H.Subtype = coe :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, succ 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)) H) 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) H) -> 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)) H) 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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Function.Injective.{succ u1, 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 H)) 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 H)) 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 H)) (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 H)) (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 H)) => (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 H)) => 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 H)) 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 H)) (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 H)) 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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 H)) 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 H)) (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 H)) 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 H)) (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 H)) 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 H)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 H))
 Case conversion may be inaccurate. Consider using '#align subgroup.subtype_injective Subgroup.subtype_injectiveₓ'. -/
 @[to_additive]
 theorem subtype_injective : Function.Injective (subtype H) :=
@@ -1291,7 +1289,7 @@ def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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)))) H K} (a : 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)) H), Eq.{succ u1} G ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) a)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K} (a : 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 H)), Eq.{succ u1} G (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h) a)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H)) a)
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_inclusion Subgroup.coe_inclusionₓ'. -/
 @[simp, to_additive]
 theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a :=
@@ -1305,7 +1303,7 @@ theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Function.Injective.{succ u1, succ 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)) H) (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)) K) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) => (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)) H) -> (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)) K)) (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)) H) (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)) K) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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.instPartialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)))) H K), Function.Injective.{succ u1, 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 H)) (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 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 H)) => (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 H)) => 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 K)) _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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (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 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H))) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (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 H)) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))))) (Subgroup.inclusion.{u1} G _inst_1 H K h))
 Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_injective Subgroup.inclusion_injectiveₓ'. -/
 @[to_additive]
 theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h :=
@@ -2111,7 +2109,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10364 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10366 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10364 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10366) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10340 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10342 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10340 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10342) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
@@ -2134,7 +2132,7 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10613 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10615 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10613 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10615) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10589 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10591 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10589 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10591) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
@@ -2147,7 +2145,7 @@ theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10715 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10717 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10715 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10717) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10691 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10693 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10691 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10693) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
@@ -2176,7 +2174,7 @@ def comap {N : Type _} [Group N] (f : G →* N) (H : Subgroup N) : Subgroup G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4) K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.preimage.{u1, u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_comap Subgroup.coe_comapₓ'. -/
 @[simp, to_additive]
 theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻¹' K :=
@@ -2188,7 +2186,7 @@ theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (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 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {K : Subgroup.{u2} N _inst_4} {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {x : G}, Iff (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 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) K)
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_comap Subgroup.mem_comapₓ'. -/
 @[simp, to_additive]
 theorem mem_comap {K : Subgroup N} {f : G →* N} {x : G} : x ∈ K.comap f ↔ f x ∈ K :=
@@ -2245,7 +2243,7 @@ def map (f : G →* N) (H : Subgroup G) : Subgroup N :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_map Subgroup.coe_mapₓ'. -/
 @[simp, to_additive]
 theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
@@ -2257,7 +2255,7 @@ theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u1} G _inst_1} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Exists.{succ u1} G (fun (x : G) => Exists.{0} (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) (fun (H : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u2} G _inst_1} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Exists.{succ u2} G (fun (x : G) => And (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y)))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map Subgroup.mem_mapₓ'. -/
 @[simp, to_additive]
 theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃ x ∈ K, f x = y :=
@@ -2269,7 +2267,7 @@ theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {K : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K) -> (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {K : Subgroup.{u2} G _inst_1} {x : G}, (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) -> (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {K : Subgroup.{u2} G _inst_1} {x : G}, (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K) -> (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_of_mem Subgroup.mem_map_of_memₓ'. -/
 @[to_additive]
 theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) : f x ∈ K.map f :=
@@ -2281,7 +2279,7 @@ theorem mem_map_of_mem (f : G →* N) {K : Subgroup G} {x : G} (hx : x ∈ K) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (K : Subgroup.{u1} G _inst_1) (x : 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)) K), Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) G (HasLiftT.mk.{succ u1, succ 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)) K) G (CoeTCₓ.coe.{succ u1, succ 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)) K) G (coeBase.{succ u1, succ 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)) K) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))))) x)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1) (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (K : Subgroup.{u2} G _inst_1) (x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) K)) x)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
 Case conversion may be inaccurate. Consider using '#align subgroup.apply_coe_mem_map Subgroup.apply_coe_mem_mapₓ'. -/
 @[to_additive]
 theorem apply_coe_mem_map (f : G →* N) (K : Subgroup G) (x : K) : f x ∈ K.map f :=
@@ -2339,7 +2337,7 @@ theorem map_one_eq_bot : K.map (1 : G →* N) = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))} {K : Subgroup.{u1} G _inst_1} {x : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => N -> G) (MulEquiv.hasCoeToFun.{u2, u1} N G (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) x) K)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))} {K : Subgroup.{u2} G _inst_1} {x : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) x) (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f) x) K)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))} {K : Subgroup.{u2} G _inst_1} {x : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) x) (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) f) x) K)
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_equiv Subgroup.mem_map_equivₓ'. -/
 @[to_additive]
 theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
@@ -2352,7 +2350,7 @@ theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {K : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {K : Subgroup.{u2} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {K : Subgroup.{u2} G _inst_1} {x : G}, Iff (Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_map_iff_mem Subgroup.mem_map_iff_memₓ'. -/
 @[to_additive]
 theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup G} {x : G} :
@@ -2523,7 +2521,7 @@ theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_eq Subgroup.map_inf_eqₓ'. -/
 @[to_additive]
 theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f) :
@@ -2550,7 +2548,7 @@ theorem map_bot (f : G →* N) : (⊥ : Subgroup G).map f = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) (Top.top.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasTop.{u2} N _inst_4)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) (Top.top.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instTopSubgroup.{u1} N _inst_4)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_top_of_surjective Subgroup.map_top_of_surjectiveₓ'. -/
 @[simp, to_additive]
 theorem map_top_of_surjective (f : G →* N) (h : Function.Surjective f) : Subgroup.map f ⊤ = ⊤ :=
@@ -2634,7 +2632,7 @@ theorem comap_inclusion_subgroupOf {K₁ K₂ : Subgroup G} (h : K₁ ≤ K₂)
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (HasLiftT.mk.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (CoeTCₓ.coe.{succ u1, 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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K)) (SetLike.Set.hasCoeT.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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)) K) 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (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)) K) -> 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)) K) 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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 K)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{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 K))) (SetLike.coe.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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 K)) 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 K)) 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 K)) (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 K)) (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 K)) => (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 K)) => 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 K)) 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 K)) (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 K)) 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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 K)) 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 K)) (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 K)) 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 K)) (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 K)) 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 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{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 K))) (SetLike.coe.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (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 K)) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Set.preimage.{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 K)) 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 K)) 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 K)) (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 K)) (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 K)) => (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 K)) => 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 K)) 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 K)) (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 K)) 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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K))) (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 K)) 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 K)) (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 K)) 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 K)) (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 K)) 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 K)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 K)) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_subgroup_of Subgroup.coe_subgroupOfₓ'. -/
 @[to_additive]
 theorem coe_subgroupOf (H K : Subgroup G) : (H.subgroupOf K : Set K) = K.Subtype ⁻¹' H :=
@@ -2831,7 +2829,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14198 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14200 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14198 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14200) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14216 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14218 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14216 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14218) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14231 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14233 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14231 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14233)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14174 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14174 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14192 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14194 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14192 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14194) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14207 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14209 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14207 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14209)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
@@ -3827,7 +3825,7 @@ instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommu
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => G' -> G) (MonoidHom.hasCoeToFun.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
 but is expected to have type
-  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} G' G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} G' G (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (forall [_inst_4 : Subgroup.IsCommutative.{u1} G _inst_1 H], Subgroup.IsCommutative.{u2} G' _inst_2 (Subgroup.comap.{u2, u1} G' _inst_2 G _inst_1 f H))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective_is_commutative Subgroup.comap_injective_isCommutativeₓ'. -/
 @[to_additive]
 theorem comap_injective_isCommutative {f : G' →* G} (hf : Injective f) [H.IsCommutative] :
@@ -4192,7 +4190,7 @@ def range (f : G →* N) : Subgroup N :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Set.range.{u2, succ u1} N G (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range MonoidHom.coe_rangeₓ'. -/
 @[simp, to_additive]
 theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
@@ -4204,7 +4202,7 @@ theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Exists.{succ u1} G (fun (x : G) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_range MonoidHom.mem_rangeₓ'. -/
 @[simp, to_additive]
 theorem mem_range {f : G →* N} {y : N} : y ∈ f.range ↔ ∃ x, f x = y :=
@@ -4255,7 +4253,7 @@ def rangeRestrict (f : G →* N) : G →* f.range :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f) g)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f g)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f g :=
@@ -4267,7 +4265,7 @@ theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{max (succ u1) (succ u2)} (G -> N) (Function.comp.{succ u1, succ u2, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem coe_comp_rangeRestrict (f : G →* N) :
@@ -4292,7 +4290,7 @@ theorem subtype_comp_rangeRestrict (f : G →* N) : f.range.Subtype.comp f.range
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Function.Surjective.{succ u1, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjectiveₓ'. -/
 @[to_additive]
 theorem rangeRestrict_surjective (f : G →* N) : Function.Surjective f.range_restrict :=
@@ -4316,7 +4314,7 @@ theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).ran
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjectiveₓ'. -/
 @[to_additive]
 theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
@@ -4329,7 +4327,7 @@ theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjectiveₓ'. -/
 /-- The range of a surjective monoid homomorphism is the whole of the codomain. -/
 @[to_additive "The range of a surjective `add_monoid` homomorphism is the whole of the codomain."]
@@ -4383,7 +4381,7 @@ theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} [_inst_6 : Group.{u1} G₁] [_inst_7 : Group.{u2} G₂] {K : Subgroup.{u2} G₂ _inst_7} (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (h : LE.le.{u2} (Subgroup.{u2} G₂ _inst_7) (Preorder.toLE.{u2} (Subgroup.{u2} G₂ _inst_7) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G₂ _inst_7) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)))) (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u2} (Subgroup.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u2} G₂ _inst_7 (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u1, u2} G₁ _inst_6 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K) (MonoidHom.codRestrict.{u1, u2, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7))) (Subgroup.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (SubgroupClass.to_submonoidClass.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (Subgroup.subgroupClass.{u2} G₂ _inst_7)) f K (fun (x : G₁) => h (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x) (Exists.intro.{succ u1} G₁ (fun (y : G₁) => Eq.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x)) x (rfl.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x))))))
 but is expected to have type
-  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
+  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_leₓ'. -/
 @[to_additive]
 theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
@@ -4400,7 +4398,7 @@ theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂]
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse MonoidHom.ofLeftInverseₓ'. -/
 /-- Computable alternative to `monoid_hom.of_injective`. -/
 @[to_additive "Computable alternative to `add_monoid_hom.of_injective`."]
@@ -4420,7 +4418,7 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
@@ -4433,7 +4431,7 @@ theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInve
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)), Eq.{succ u1} G (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> G) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h)) x) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) x))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
@@ -4446,7 +4444,7 @@ theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.Lef
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective MonoidHom.ofInjectiveₓ'. -/
 /-- The range of an injective group homomorphism is isomorphic to its domain. -/
 @[to_additive "The range of an injective additive group homomorphism is isomorphic to its\ndomain."]
@@ -4463,7 +4461,7 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) {x : G}, Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofInjective.{u1, u2} G _inst_1 N _inst_4 f hf) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective_apply MonoidHom.ofInjective_applyₓ'. -/
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
@@ -4496,7 +4494,7 @@ def ker (f : G →* M) : Subgroup G :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6)))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) _inst_6))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) _inst_6))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_ker MonoidHom.mem_kerₓ'. -/
 @[to_additive]
 theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
@@ -4508,7 +4506,7 @@ theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Set.preimage.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f) (Singleton.singleton.{u2, u2} M (Set.{u2} M) (Set.hasSingleton.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6))))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_ker MonoidHom.coe_kerₓ'. -/
 @[to_additive]
 theorem coe_ker (f : G →* M) : (f.ker : Set G) = (f : G → M) ⁻¹' {1} :=
@@ -4534,7 +4532,7 @@ theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f y)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) y) x) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_iff MonoidHom.eq_iffₓ'. -/
 @[to_additive]
 theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
@@ -4597,7 +4595,7 @@ theorem ker_restrict (f : G →* N) : (f.restrict K).ker = f.ker.subgroupOf K :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.Mem.{u2, u3} N S (SetLike.hasMem.{u3, u2} S N _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (coeSort.{succ u3, succ (succ u2)} S Type.{u2} (SetLike.hasCoeToSort.{u3, u2} S N _inst_7) s) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrictₓ'. -/
 @[simp, to_additive]
 theorem ker_codRestrict {S} [SetLike S N] [SubmonoidClass S N] (f : G →* N) (s : S)
@@ -4646,7 +4644,7 @@ theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Function.Injective.{succ u1, succ u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
@@ -4746,7 +4744,7 @@ theorem eqLocus_same (f : G →* N) : f.eqLocus f = ⊤ :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {s : Set.{u1} G}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_on_closure MonoidHom.eqOn_closureₓ'. -/
 /-- If two monoid homomorphisms are equal on a set, then they are equal on its subgroup closure. -/
 @[to_additive
@@ -4760,7 +4758,7 @@ theorem eqOn_closure {f g : G →* M} {s : Set G} (h : Set.EqOn f g s) : Set.EqO
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_topₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) : f = g :=
@@ -4772,7 +4770,7 @@ theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {s : Set.{u1} G}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 s) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) -> (forall {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_dense MonoidHom.eq_of_eqOn_denseₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_dense {s : Set G} (hs : closure s = ⊤) {f g : G →* M} (h : s.EqOn f g) : f = g :=
@@ -4786,7 +4784,7 @@ end EqLocus
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u2} N), 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)))) (Subgroup.closure.{u1} G _inst_1 (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} N _inst_4 s))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_leₓ'. -/
 @[to_additive]
 theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) ≤ (closure s).comap f :=
@@ -4798,7 +4796,7 @@ theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) 
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u1} G), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.closure.{u2} N _inst_4 (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_closure MonoidHom.map_closureₓ'. -/
 /-- The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup
 generated by the image of the set. -/
@@ -4820,7 +4818,7 @@ variable {N : Type _} [Group N] (H : Subgroup G)
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Subgroup.Normal.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.normal.map Subgroup.Normal.mapₓ'. -/
 @[to_additive]
 theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function.Surjective f) :
@@ -4848,7 +4846,7 @@ theorem map_eq_bot_iff {f : G →* N} : H.map f = ⊥ ↔ H ≤ f.ker :=
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff_of_injective Subgroup.map_eq_bot_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_eq_bot_iff_of_injective {f : G →* N} (hf : Function.Injective f) :
@@ -4970,7 +4968,7 @@ theorem map_comap_eq_self {f : G →* N} {H : Subgroup N} (h : H ≤ f.range) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjectiveₓ'. -/
 @[to_additive]
 theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective f) (H : Subgroup N) :
@@ -4996,7 +4994,7 @@ theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
@@ -5009,7 +5007,7 @@ theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (LT.lt.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLT.{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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LT.lt.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLT.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
@@ -5021,7 +5019,7 @@ theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Fun
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} N _inst_4) (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective Subgroup.comap_injectiveₓ'. -/
 @[to_additive]
 theorem comap_injective {f : G →* N} (h : Function.Surjective f) : Function.Injective (comap f) :=
@@ -5045,7 +5043,7 @@ theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) : co
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injectiveₓ'. -/
 @[to_additive]
 theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
@@ -5107,7 +5105,7 @@ theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} : H.map f = f.range ↔
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
@@ -5132,7 +5130,7 @@ theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} G _inst_1) (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_injective Subgroup.map_injectiveₓ'. -/
 @[to_additive]
 theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) :=
@@ -5144,7 +5142,7 @@ theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injec
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.RightInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 g H))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverseₓ'. -/
 @[to_additive]
 theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
@@ -5173,7 +5171,7 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) -> 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.hasTop.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_topₓ'. -/
 @[to_additive]
 theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹' s) = ⊤ :=
@@ -5206,7 +5204,7 @@ theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq Subgroup.comap_sup_eqₓ'. -/
 @[to_additive]
 theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
@@ -5248,7 +5246,7 @@ theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjectiveₓ'. -/
 /-- A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
 use `mul_equiv.subgroup_map` for better definitional equalities. -/
@@ -5264,7 +5262,7 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (h : 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)) H), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 N _inst_4 H f hf) h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) h))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
@@ -5277,7 +5275,7 @@ theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Func
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Surjective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjectiveₓ'. -/
 /-- The preimage of the normalizer is equal to the normalizer of the preimage of a surjective
   function. -/
@@ -5299,7 +5297,7 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H : Subgroup G)
@@ -5355,7 +5353,7 @@ theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Bijective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_normalizer_eq_of_bijective Subgroup.map_normalizer_eq_of_bijectiveₓ'. -/
 /-- The image of the normalizer is equal to the normalizer of the image of a bijective
   function. -/
@@ -5379,7 +5377,7 @@ variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAuxₓ'. -/
 /-- Auxiliary definition used to define `lift_of_right_inverse` -/
 @[to_additive "Auxiliary definition used to define `lift_of_right_inverse`"]
@@ -5400,7 +5398,7 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.liftOfRightInverseAux.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) g x)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5418,7 +5416,7 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverseₓ'. -/
 /-- `lift_of_right_inverse f hf g hg` is the unique group homomorphism `φ`
 
@@ -5458,7 +5456,7 @@ def liftOfRightInverse (hf : Function.RightInverse f_inv f) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 but is expected to have type
-  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjectiveₓ'. -/
 /-- A non-computable version of `monoid_hom.lift_of_right_inverse` for when no computable right
 inverse is available, that uses `function.surj_inv`. -/
@@ -5475,7 +5473,7 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max 1 (succ u3) (succ u1), max (succ u1) (succ u3)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (fun (x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) => G₁ -> G₃) (coeFnTrans.{max (succ u1) (succ u3), max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBaseAux.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))))) g x)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
@@ -5489,7 +5487,7 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) ((fun (a : Sort.{max 1 (succ u3) (succ u1)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} a b] => self.0) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (HasLiftT.mk.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (CoeTCₓ.coe.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBase.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)))))) g)
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_compₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
@@ -5502,7 +5500,7 @@ theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
 lean 3 declaration is
   forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) h (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) g hg)))
 but is expected to have type
-  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverseₓ'. -/
 @[to_additive]
 theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
@@ -5595,7 +5593,7 @@ def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), Function.Surjective.{succ u1, succ u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (fun (_x : MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H))) (MonoidHom.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 f H))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjectiveₓ'. -/
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
@@ -5644,7 +5642,7 @@ def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G')
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : 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)) H), Eq.{succ u2} G' ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H) g)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) => G -> G') (MulEquiv.hasCoeToFun.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) e ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) g))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => G') _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => G') _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
 Case conversion may be inaccurate. Consider using '#align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
@@ -5657,7 +5655,7 @@ theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
 lean 3 declaration is
   forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)), Eq.{succ 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)) H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) -> (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)) H)) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (MulEquiv.symm.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Iff.mp (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) H) (SetLike.mem_coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1) H (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g))) (Iff.mp (Membership.Mem.{u2, u2} G' (Set.{u2} G') (Set.hasMem.{u2} G') ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g) (Set.image.{u1, u2} G G' (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} G G') (fun (_x : Equiv.{succ u1, succ u2} G G') => G -> G') (Equiv.hasCoeToFun.{succ u1, succ u2} G G') (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} G' G) (fun (_x : Equiv.{succ u2, succ u1} G' G) => G' -> G) (Equiv.hasCoeToFun.{succ u2, succ u1} G' G) (Equiv.symm.{succ u1, succ u2} G G' (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Set.mem_image_equiv.{u1, u2} G G' ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Subtype.property.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) g))))
 but is expected to have type
-  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
 Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
Diff
@@ -2111,7 +2111,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10292 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10294 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10292 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10294) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10364 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10366 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10364 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10366) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
@@ -2134,7 +2134,7 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10541 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10543 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10541 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10543) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10613 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10615 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10613 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10615) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
@@ -2147,7 +2147,7 @@ theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10643 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10645 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10643 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10645) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10715 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10717 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10715 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10717) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
@@ -2831,7 +2831,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14126 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14128 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14126 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14128) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14144 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14146 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14144 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14146) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14159 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14161 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14159 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14161)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14198 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14200 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14198 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14200) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14216 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14218 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14216 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14218) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14231 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14233 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14231 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14233)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit a11f9106a169dd302a285019e5165f8ab32ff433
+! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -135,6 +135,19 @@ class AddSubgroupClass (S G : Type _) [SubNegMonoid G] [SetLike S G] extends Add
 
 attribute [to_additive] InvMemClass SubgroupClass
 
+/- warning: inv_mem_iff -> inv_mem_iff is a dubious translation:
+lean 3 declaration is
+  forall {S : Type.{u1}} {G : Type.{u2}} [_inst_4 : InvolutiveInv.{u2} G] [_inst_5 : SetLike.{u1, u2} S G] [_inst_6 : InvMemClass.{u1, u2} S G (InvolutiveInv.toHasInv.{u2} G _inst_4) _inst_5] {H : S} {x : G}, Iff (Membership.Mem.{u2, u1} G S (SetLike.hasMem.{u1, u2} S G _inst_5) (Inv.inv.{u2} G (InvolutiveInv.toHasInv.{u2} G _inst_4) x) H) (Membership.Mem.{u2, u1} G S (SetLike.hasMem.{u1, u2} S G _inst_5) x H)
+but is expected to have type
+  forall {S : Type.{u2}} {G : Type.{u1}} [_inst_4 : InvolutiveInv.{u1} G] {_inst_5 : SetLike.{u2, u1} S G} [_inst_6 : InvMemClass.{u2, u1} S G (InvolutiveInv.toInv.{u1} G _inst_4) _inst_5] {H : S} {x : G}, Iff (Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_5) (Inv.inv.{u1} G (InvolutiveInv.toInv.{u1} G _inst_4) x) H) (Membership.mem.{u1, u2} G S (SetLike.instMembership.{u2, u1} S G _inst_5) x H)
+Case conversion may be inaccurate. Consider using '#align inv_mem_iff inv_mem_iffₓ'. -/
+@[simp, to_additive]
+theorem inv_mem_iff {S G} [InvolutiveInv G] [SetLike S G] [InvMemClass S G] {H : S} {x : G} :
+    x⁻¹ ∈ H ↔ x ∈ H :=
+  ⟨fun h => inv_inv x ▸ inv_mem h, inv_mem⟩
+#align inv_mem_iff inv_mem_iff
+#align neg_mem_iff neg_mem_iff
+
 variable {M S : Type _} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
 
 include hSM
@@ -175,18 +188,6 @@ variable [SetLike S G] [hSG : SubgroupClass S G]
 
 include hSG
 
-/- warning: inv_mem_iff -> inv_mem_iff is a dubious translation:
-lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {x : G}, Iff (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) H) (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H)
-but is expected to have type
-  forall {G : Type.{u2}} {_inst_1 : Type.{u1}} [S : InvolutiveInv.{u1} _inst_1] {H : SetLike.{u2, u1} G _inst_1} [_inst_6 : InvMemClass.{u2, u1} G _inst_1 (InvolutiveInv.toInv.{u1} _inst_1 S) H] {hSG : G} {x : _inst_1}, Iff (Membership.mem.{u1, u2} _inst_1 G (SetLike.instMembership.{u2, u1} G _inst_1 H) (Inv.inv.{u1} _inst_1 (InvolutiveInv.toInv.{u1} _inst_1 S) x) hSG) (Membership.mem.{u1, u2} _inst_1 G (SetLike.instMembership.{u2, u1} G _inst_1 H) x hSG)
-Case conversion may be inaccurate. Consider using '#align inv_mem_iff inv_mem_iffₓ'. -/
-@[simp, to_additive]
-theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
-  ⟨fun h => inv_inv x ▸ inv_mem h, inv_mem⟩
-#align inv_mem_iff inv_mem_iff
-#align neg_mem_iff neg_mem_iff
-
 /- warning: div_mem_comm_iff -> div_mem_comm_iff is a dubious translation:
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {a : G} {b : G}, Iff (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) a b) H) (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (HDiv.hDiv.{u1, u1, u1} G G G (instHDiv.{u1} G (DivInvMonoid.toHasDiv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) b a) H)
Diff
@@ -179,7 +179,7 @@ include hSG
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Type.{u2}} {H : S} [_inst_6 : SetLike.{u2, u1} S G] [hSG : SubgroupClass.{u2, u1} S G (Group.toDivInvMonoid.{u1} G _inst_1) _inst_6] {x : G}, Iff (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) x) H) (Membership.Mem.{u1, u2} G S (SetLike.hasMem.{u2, u1} S G _inst_6) x H)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {S : Type.{u1}} {H : S} [_inst_6 : SetLike.{u1, u2} S G] [hSG : SubgroupClass.{u1, u2} S G (Group.toDivInvMonoid.{u2} G _inst_1) _inst_6] {x : G}, Iff (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) x) H) (Membership.mem.{u2, u1} G S (SetLike.instMembership.{u1, u2} S G _inst_6) x H)
+  forall {G : Type.{u2}} {_inst_1 : Type.{u1}} [S : InvolutiveInv.{u1} _inst_1] {H : SetLike.{u2, u1} G _inst_1} [_inst_6 : InvMemClass.{u2, u1} G _inst_1 (InvolutiveInv.toInv.{u1} _inst_1 S) H] {hSG : G} {x : _inst_1}, Iff (Membership.mem.{u1, u2} _inst_1 G (SetLike.instMembership.{u2, u1} G _inst_1 H) (Inv.inv.{u1} _inst_1 (InvolutiveInv.toInv.{u1} _inst_1 S) x) hSG) (Membership.mem.{u1, u2} _inst_1 G (SetLike.instMembership.{u2, u1} G _inst_1 H) x hSG)
 Case conversion may be inaccurate. Consider using '#align inv_mem_iff inv_mem_iffₓ'. -/
 @[simp, to_additive]
 theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
@@ -2110,7 +2110,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10324 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10326 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10324 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10326) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10292 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10294 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10292 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10294) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
@@ -2133,7 +2133,7 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10573 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10575 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10573 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10575) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10541 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10543 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10541 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10543) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
@@ -2146,7 +2146,7 @@ theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10675 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10677 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10675 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10677) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10643 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10645 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10643 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10645) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
@@ -2830,7 +2830,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14158 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14160 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14158 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14160) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14178 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14178) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14191 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14193 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14191 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14193)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14126 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14128 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14126 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14128) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14144 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14146 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14144 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14146) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14159 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14161 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14159 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14161)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=
Diff
@@ -965,7 +965,7 @@ lean 3 declaration is
 but is expected to have type
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), (Set.Nonempty.{u1} G s) -> (forall (x : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x s) -> (forall (y : G), (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) y s) -> (Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) y)) s))) -> (Subgroup.{u1} G _inst_1)
 Case conversion may be inaccurate. Consider using '#align subgroup.of_div Subgroup.ofDivₓ'. -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (x y «expr ∈ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x y «expr ∈ » s) -/
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
 def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), x * y⁻¹ ∈ s) :
Diff
@@ -1536,16 +1536,16 @@ theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (
 
 /-- The inf of two subgroups is their intersection. -/
 @[to_additive "The inf of two `add_subgroups`s is their intersection."]
-instance : HasInf (Subgroup G) :=
+instance : Inf (Subgroup G) :=
   ⟨fun H₁ H₂ =>
     { H₁.toSubmonoid ⊓ H₂.toSubmonoid with
       inv_mem' := fun _ ⟨hx, hx'⟩ => ⟨H₁.inv_mem hx, H₂.inv_mem hx'⟩ }⟩
 
 /- warning: subgroup.coe_inf -> Subgroup.coe_inf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (p : Subgroup.{u1} G _inst_1) (p' : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) p p')) (Inter.inter.{u1} (Set.{u1} G) (Set.hasInter.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) p) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) p'))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (p : Subgroup.{u1} G _inst_1) (p' : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) p p')) (Inter.inter.{u1} (Set.{u1} G) (Set.hasInter.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) p) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) p'))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (p : Subgroup.{u1} G _inst_1) (p' : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) p p')) (Inter.inter.{u1} (Set.{u1} G) (Set.instInterSet.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) p) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) p'))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (p : Subgroup.{u1} G _inst_1) (p' : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) p p')) (Inter.inter.{u1} (Set.{u1} G) (Set.instInterSet.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) p) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) p'))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_inf Subgroup.coe_infₓ'. -/
 @[simp, to_additive]
 theorem coe_inf (p p' : Subgroup G) : ((p ⊓ p' : Subgroup G) : Set G) = p ∩ p' :=
@@ -1555,9 +1555,9 @@ theorem coe_inf (p p' : Subgroup G) : ((p ⊓ p' : Subgroup G) : Set G) = p ∩
 
 /- warning: subgroup.mem_inf -> Subgroup.mem_inf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {p' : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) p p')) (And (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p'))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {p' : Subgroup.{u1} G _inst_1} {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) p p')) (And (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x p'))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {p' : Subgroup.{u1} G _inst_1} {x : G}, Iff (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 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) p p')) (And (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 p) (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 p'))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {p : Subgroup.{u1} G _inst_1} {p' : Subgroup.{u1} G _inst_1} {x : G}, Iff (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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) p p')) (And (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 p) (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 p'))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_inf Subgroup.mem_infₓ'. -/
 @[simp, to_additive]
 theorem mem_inf {p p' : Subgroup G} {x : G} : x ∈ p ⊓ p' ↔ x ∈ p ∧ x ∈ p' :=
@@ -1638,9 +1638,9 @@ instance : CompleteLattice (Subgroup G) :=
 
 /- warning: subgroup.mem_sup_left -> Subgroup.mem_sup_left is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {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 S) -> (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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {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 S) -> (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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup_left Subgroup.mem_sup_leftₓ'. -/
 @[to_additive]
 theorem mem_sup_left {S T : Subgroup G} : ∀ {x : G}, x ∈ S → x ∈ S ⊔ T :=
@@ -1650,9 +1650,9 @@ theorem mem_sup_left {S T : Subgroup G} : ∀ {x : G}, x ∈ S → x ∈ S ⊔ T
 
 /- warning: subgroup.mem_sup_right -> Subgroup.mem_sup_right is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x T) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x T) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {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 T) -> (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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {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 T) -> (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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup_right Subgroup.mem_sup_rightₓ'. -/
 @[to_additive]
 theorem mem_sup_right {S T : Subgroup G} : ∀ {x : G}, x ∈ T → x ∈ S ⊔ T :=
@@ -1662,9 +1662,9 @@ theorem mem_sup_right {S T : Subgroup G} : ∀ {x : G}, x ∈ T → x ∈ S ⊔
 
 /- warning: subgroup.mul_mem_sup -> Subgroup.mul_mem_sup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y T) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x S) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y T) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) S T))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G} {y : 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 S) -> (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)) y T) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {S : Subgroup.{u1} G _inst_1} {T : Subgroup.{u1} G _inst_1} {x : G} {y : 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 S) -> (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)) y T) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) S T))
 Case conversion may be inaccurate. Consider using '#align subgroup.mul_mem_sup Subgroup.mul_mem_supₓ'. -/
 @[to_additive]
 theorem mul_mem_sup {S T : Subgroup G} {x y : G} (hx : x ∈ S) (hy : y ∈ T) : x * y ∈ S ⊔ T :=
@@ -1995,9 +1995,9 @@ theorem closure_univ : closure (univ : Set G) = ⊤ :=
 
 /- warning: subgroup.closure_union -> Subgroup.closure_union is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G) (t : Set.{u1} G), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Union.union.{u1} (Set.{u1} G) (Set.hasUnion.{u1} G) s t)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.closure.{u1} G _inst_1 t))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G) (t : Set.{u1} G), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Union.union.{u1} (Set.{u1} G) (Set.hasUnion.{u1} G) s t)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.closure.{u1} G _inst_1 t))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G) (t : Set.{u1} G), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Union.union.{u1} (Set.{u1} G) (Set.instUnionSet.{u1} G) s t)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.closure.{u1} G _inst_1 t))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G) (t : Set.{u1} G), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 (Union.union.{u1} (Set.{u1} G) (Set.instUnionSet.{u1} G) s t)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.closure.{u1} G _inst_1 t))
 Case conversion may be inaccurate. Consider using '#align subgroup.closure_union Subgroup.closure_unionₓ'. -/
 @[to_additive]
 theorem closure_union (s t : Set G) : closure (s ∪ t) = closure s ⊔ closure t :=
@@ -2432,9 +2432,9 @@ theorem gc_map_comap (f : G →* N) : GaloisConnection (map f) (comap f) := fun
 
 /- warning: subgroup.map_sup -> Subgroup.map_sup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H K)) (HasSup.sup.{u1} (Subgroup.{u1} N _inst_4) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} N _inst_4) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H K)) (Sup.sup.{u1} (Subgroup.{u1} N _inst_4) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} N _inst_4) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4)))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_sup Subgroup.map_supₓ'. -/
 @[to_additive]
 theorem map_sup (H K : Subgroup G) (f : G →* N) : (H ⊔ K).map f = H.map f ⊔ K.map f :=
@@ -2457,9 +2457,9 @@ theorem map_supᵢ {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
 
 /- warning: subgroup.comap_sup_comap_le -> Subgroup.comap_sup_comap_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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)))) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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))))) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), 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))))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_comap_le Subgroup.comap_sup_comap_leₓ'. -/
 @[to_additive]
 theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
@@ -2483,9 +2483,9 @@ theorem supᵢ_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
 
 /- warning: subgroup.comap_inf -> Subgroup.comap_inf is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) H K)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instHasInfSubgroup.{u2} N _inst_4) H K)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instInfSubgroup.{u2} N _inst_4) H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_inf Subgroup.comap_infₓ'. -/
 @[to_additive]
 theorem comap_inf (H K : Subgroup N) (f : G →* N) : (H ⊓ K).comap f = H.comap f ⊓ K.comap f :=
@@ -2508,9 +2508,9 @@ theorem comap_infᵢ {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
 
 /- warning: subgroup.map_inf_le -> Subgroup.map_inf_le is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (HasInf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instHasInfSubgroup.{u2} G _inst_1) H K)) (HasInf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instHasInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_le Subgroup.map_inf_leₓ'. -/
 @[to_additive]
 theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f H ⊓ map f K :=
@@ -2520,9 +2520,9 @@ theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f
 
 /- warning: subgroup.map_inf_eq -> Subgroup.map_inf_eq is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (HasInf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instHasInfSubgroup.{u2} G _inst_1) H K)) (HasInf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instHasInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Inf.inf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instInfSubgroup.{u2} G _inst_1) H K)) (Inf.inf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instInfSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_inf_eq Subgroup.map_inf_eqₓ'. -/
 @[to_additive]
 theorem map_inf_eq (H K : Subgroup G) (f : G →* N) (hf : Function.Injective f) :
@@ -2655,9 +2655,9 @@ theorem mem_subgroupOf {H K : Subgroup G} {h : K} : h ∈ H.subgroupOf K ↔ (h
 
 /- warning: subgroup.subgroup_of_map_subtype -> Subgroup.subgroupOf_map_subtype is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.map.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_map_subtype Subgroup.subgroupOf_map_subtypeₓ'. -/
 @[simp, to_additive]
 theorem subgroupOf_map_subtype (H K : Subgroup G) : (H.subgroupOf K).map K.Subtype = H ⊓ K :=
@@ -2727,9 +2727,9 @@ theorem subgroupOf_self : H.subgroupOf H = ⊤ :=
 
 /- warning: subgroup.subgroup_of_inj -> Subgroup.subgroupOf_inj is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K) (Subgroup.subgroupOf.{u1} G _inst_1 H₂ K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H₁ K) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H₂ K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K) (Subgroup.subgroupOf.{u1} G _inst_1 H₂ K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H₁ K) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H₂ K))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K) (Subgroup.subgroupOf.{u1} G _inst_1 H₂ K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) H₁ K) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) H₂ K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K) (Subgroup.subgroupOf.{u1} G _inst_1 H₂ K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H₁ K) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H₂ K))
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_inj Subgroup.subgroupOf_injₓ'. -/
 @[simp, to_additive]
 theorem subgroupOf_inj {H₁ H₂ K : Subgroup G} :
@@ -2740,9 +2740,9 @@ theorem subgroupOf_inj {H₁ H₂ K : Subgroup G} :
 
 /- warning: subgroup.inf_subgroup_of_right -> Subgroup.inf_subgroupOf_right is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) H K) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H K) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_right Subgroup.inf_subgroupOf_rightₓ'. -/
 @[simp, to_additive]
 theorem inf_subgroupOf_right (H K : Subgroup G) : (H ⊓ K).subgroupOf K = H.subgroupOf K :=
@@ -2752,9 +2752,9 @@ theorem inf_subgroupOf_right (H K : Subgroup G) : (H ⊓ K).subgroupOf K = H.sub
 
 /- warning: subgroup.inf_subgroup_of_left -> Subgroup.inf_subgroupOf_left is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) K H) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) K H) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) K H) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) K H) K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_left Subgroup.inf_subgroupOf_leftₓ'. -/
 @[simp, to_additive]
 theorem inf_subgroupOf_left (H K : Subgroup G) : (K ⊓ H).subgroupOf K = H.subgroupOf K := by
@@ -4925,9 +4925,9 @@ theorem le_comap_map (H : Subgroup G) : H ≤ comap f (map f H) :=
 
 /- warning: subgroup.map_comap_eq -> Subgroup.map_comap_eq is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instHasInfSubgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (Inf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instInfSubgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
 Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq Subgroup.map_comap_eqₓ'. -/
 @[to_additive]
 theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
@@ -4938,9 +4938,9 @@ theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
 
 /- warning: subgroup.comap_map_eq -> Subgroup.comap_map_eq is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq Subgroup.comap_map_eqₓ'. -/
 @[to_additive]
 theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
@@ -5055,9 +5055,9 @@ theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f)
 
 /- warning: subgroup.map_le_map_iff -> Subgroup.map_le_map_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff Subgroup.map_le_map_iffₓ'. -/
 @[to_additive]
 theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f ↔ H ≤ K ⊔ f.ker := by
@@ -5067,9 +5067,9 @@ theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f 
 
 /- warning: subgroup.map_le_map_iff' -> Subgroup.map_le_map_iff' is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff' Subgroup.map_le_map_iff'ₓ'. -/
 @[to_additive]
 theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
@@ -5080,9 +5080,9 @@ theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
 
 /- warning: subgroup.map_eq_map_iff -> Subgroup.map_eq_map_iff is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (Sup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
 Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_map_iff Subgroup.map_eq_map_iffₓ'. -/
 @[to_additive]
 theorem map_eq_map_iff {f : G →* N} {H K : Subgroup G} :
@@ -5187,9 +5187,9 @@ theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹
 
 /- warning: subgroup.comap_sup_eq_of_le_range -> Subgroup.comap_sup_eq_of_le_range is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq_of_le_range Subgroup.comap_sup_eq_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range) :
@@ -5203,9 +5203,9 @@ theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K
 
 /- warning: subgroup.comap_sup_eq -> Subgroup.comap_sup_eq is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Sup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
 Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq Subgroup.comap_sup_eqₓ'. -/
 @[to_additive]
 theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
@@ -5217,9 +5217,9 @@ theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
 
 /- warning: subgroup.sup_subgroup_of_eq -> Subgroup.sup_subgroupOf_eq is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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)))) H L) -> (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)))) K L) -> (Eq.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (HasSup.sup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.completeLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K) L))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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)))) H L) -> (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)))) K L) -> (Eq.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Sup.sup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.completeLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K) L))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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))))) H L) -> (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))))) K L) -> (Eq.{succ 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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (HasSup.sup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.instCompleteLatticeSubgroup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K) L))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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))))) H L) -> (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))))) K L) -> (Eq.{succ 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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Sup.sup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.instCompleteLatticeSubgroup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K) L))
 Case conversion may be inaccurate. Consider using '#align subgroup.sup_subgroup_of_eq Subgroup.sup_subgroupOf_eqₓ'. -/
 @[to_additive]
 theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
@@ -5230,9 +5230,9 @@ theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
 
 /- warning: subgroup.codisjoint_subgroup_of_sup -> Subgroup.codisjoint_subgroupOf_sup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))) (BoundedOrder.toOrderTop.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))))) (CompleteLattice.toBoundedOrder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Subgroup.completeLattice.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))) (BoundedOrder.toOrderTop.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))))) (CompleteLattice.toBoundedOrder.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Subgroup.completeLattice.{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)) (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (BoundedOrder.toOrderTop.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))))) (CompleteLattice.toBoundedOrder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (BoundedOrder.toOrderTop.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))))) (CompleteLattice.toBoundedOrder.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))
 Case conversion may be inaccurate. Consider using '#align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_supₓ'. -/
 @[to_additive]
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
@@ -5688,9 +5688,9 @@ variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
 
 /- warning: subgroup.mem_sup -> Subgroup.mem_sup is a dubious translation:
 lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) => Exists.{succ u1} C (fun (z : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) => Exists.{succ u1} C (fun (z : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
 but is expected to have type
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (Exists.{succ u1} C (fun (z : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (Exists.{succ u1} C (fun (z : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup Subgroup.mem_supₓ'. -/
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
@@ -5711,9 +5711,9 @@ theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
 
 /- warning: subgroup.mem_sup' -> Subgroup.mem_sup' is a dubious translation:
 lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) (fun (y : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) => Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) (fun (z : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s))))) y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t))))) z)) x)))
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) (fun (y : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) => Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) (fun (z : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s))))) y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t))))) z)) x)))
 but is expected to have type
-  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) (fun (y : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) => Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) (fun (z : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) s)) y) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) t)) z)) x)))
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (Sup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) (fun (y : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) => Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) (fun (z : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) s)) y) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) t)) z)) x)))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup' Subgroup.mem_sup'ₓ'. -/
 @[to_additive]
 theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s)(z : t), (y : C) * z = x :=
@@ -5799,9 +5799,9 @@ instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.N
 
 /- warning: subgroup.inf_subgroup_of_inf_normal_of_right -> Subgroup.inf_subgroupOf_inf_normal_of_right is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) B' B) -> (forall [hN : Subgroup.Normal.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B') (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) B' B) -> (forall [hN : Subgroup.Normal.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B') (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) B' B) -> (forall [hN : Subgroup.Normal.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B') (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) B' B) -> (forall [hN : Subgroup.Normal.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B') (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)))
 Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_rightₓ'. -/
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
@@ -5815,9 +5815,9 @@ theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
 
 /- warning: subgroup.inf_subgroup_of_inf_normal_of_left -> Subgroup.inf_subgroupOf_inf_normal_of_left is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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)))) A' A) -> (forall [hN : Subgroup.Normal.{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)) A) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A' B) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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)))) A' A) -> (forall [hN : Subgroup.Normal.{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)) A) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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)) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A' B) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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))))) A' A) -> (forall [hN : Subgroup.Normal.{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 A)) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A' B) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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))))) A' A) -> (forall [hN : Subgroup.Normal.{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 A)) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A' B) (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) A B)))
 Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_leftₓ'. -/
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (hA : A' ≤ A)
@@ -5831,9 +5831,9 @@ theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (
 
 /- warning: subgroup.normal_inf_normal -> Subgroup.normal_inf_normal is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) H K)
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (Inf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instInfSubgroup.{u1} G _inst_1) H K)
 Case conversion may be inaccurate. Consider using '#align subgroup.normal_inf_normal Subgroup.normal_inf_normalₓ'. -/
 @[to_additive]
 instance normal_inf_normal (H K : Subgroup G) [hH : H.Normal] [hK : K.Normal] : (H ⊓ K).Normal :=
@@ -5843,9 +5843,9 @@ instance normal_inf_normal (H K : Subgroup G) [hH : H.Normal] [hK : K.Normal] :
 
 /- warning: subgroup.subgroup_of_sup -> Subgroup.subgroupOf_sup is a dubious translation:
 lean 3 declaration is
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) A B) -> (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)))) A' B) -> (Eq.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) A A') B) (HasSup.sup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.completeLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) A B) -> (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)))) A' B) -> (Eq.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) A A') B) (Sup.sup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.completeLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) A B) -> (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))))) A' B) -> (Eq.{succ 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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) A A') B) (HasSup.sup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.instCompleteLatticeSubgroup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) A B) -> (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))))) A' B) -> (Eq.{succ 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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (Sup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) A A') B) (Sup.sup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.instCompleteLatticeSubgroup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
 Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_sup Subgroup.subgroupOf_supₓ'. -/
 @[to_additive]
 theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
Diff
@@ -4072,11 +4072,15 @@ theorem normalClosure_idempotent : normalClosure ↑(normalClosure s) = normalCl
 #align subgroup.normal_closure_idempotent Subgroup.normalClosure_idempotent
 -/
 
-#print Subgroup.closure_le_normalClosure /-
+/- warning: subgroup.closure_le_normal_closure -> Subgroup.closure_le_normalClosure is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{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)))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 s)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {s : Set.{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))))) (Subgroup.closure.{u1} G _inst_1 s) (Subgroup.normalClosure.{u1} G _inst_1 s)
+Case conversion may be inaccurate. Consider using '#align subgroup.closure_le_normal_closure Subgroup.closure_le_normalClosureₓ'. -/
 theorem closure_le_normalClosure {s : Set G} : closure s ≤ normalClosure s := by
   simp only [subset_normal_closure, closure_le]
 #align subgroup.closure_le_normal_closure Subgroup.closure_le_normalClosure
--/
 
 #print Subgroup.normalClosure_closure_eq_normalClosure /-
 @[simp]
@@ -4098,13 +4102,17 @@ def normalCore (H : Subgroup G) : Subgroup G
 #align subgroup.normal_core Subgroup.normalCore
 -/
 
-#print Subgroup.normalCore_le /-
+/- warning: subgroup.normal_core_le -> Subgroup.normalCore_le is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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)))) (Subgroup.normalCore.{u1} G _inst_1 H) H
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), 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))))) (Subgroup.normalCore.{u1} G _inst_1 H) H
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_le Subgroup.normalCore_leₓ'. -/
 theorem normalCore_le (H : Subgroup G) : H.normalCore ≤ H := fun a h =>
   by
   rw [← mul_one a, ← inv_one, ← one_mul a]
   exact h 1
 #align subgroup.normal_core_le Subgroup.normalCore_le
--/
 
 #print Subgroup.normalCore_normal /-
 instance normalCore_normal (H : Subgroup G) : H.normalCore.Normal :=
@@ -4113,20 +4121,33 @@ instance normalCore_normal (H : Subgroup G) : H.normalCore.Normal :=
 #align subgroup.normal_core_normal Subgroup.normalCore_normal
 -/
 
-#print Subgroup.normal_le_normalCore /-
+/- warning: subgroup.normal_le_normal_core -> Subgroup.normal_le_normalCore is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [hN : Subgroup.Normal.{u1} G _inst_1 N], Iff (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)))) N (Subgroup.normalCore.{u1} G _inst_1 H)) (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)))) N H)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [hN : Subgroup.Normal.{u1} G _inst_1 N], Iff (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))))) N (Subgroup.normalCore.{u1} G _inst_1 H)) (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))))) N H)
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_le_normal_core Subgroup.normal_le_normalCoreₓ'. -/
 theorem normal_le_normalCore {H : Subgroup G} {N : Subgroup G} [hN : N.Normal] :
     N ≤ H.normalCore ↔ N ≤ H :=
   ⟨ge_trans H.normalCore_le, fun h_le n hn g => h_le (hN.conj_mem n hn g)⟩
 #align subgroup.normal_le_normal_core Subgroup.normal_le_normalCore
--/
 
-#print Subgroup.normalCore_mono /-
+/- warning: subgroup.normal_core_mono -> Subgroup.normalCore_mono is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (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)))) (Subgroup.normalCore.{u1} G _inst_1 H) (Subgroup.normalCore.{u1} G _inst_1 K))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (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))))) (Subgroup.normalCore.{u1} G _inst_1 H) (Subgroup.normalCore.{u1} G _inst_1 K))
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_mono Subgroup.normalCore_monoₓ'. -/
 theorem normalCore_mono {H K : Subgroup G} (h : H ≤ K) : H.normalCore ≤ K.normalCore :=
   normal_le_normalCore.mpr (H.normalCore_le.trans h)
 #align subgroup.normal_core_mono Subgroup.normalCore_mono
--/
 
-#print Subgroup.normalCore_eq_supᵢ /-
+/- warning: subgroup.normal_core_eq_supr -> Subgroup.normalCore_eq_supᵢ is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (supᵢ.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) (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)))) N H) (fun (hs : 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)))) N H) => N))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.normalCore.{u1} G _inst_1 H) (supᵢ.{u1, succ u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.{u1} G _inst_1) (fun (N : Subgroup.{u1} G _inst_1) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (Subgroup.Normal.{u1} G _inst_1 N) (fun (_x : Subgroup.Normal.{u1} G _inst_1 N) => supᵢ.{u1, 0} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) (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))))) N H) (fun (hs : 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))))) N H) => N))))
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_supᵢₓ'. -/
 theorem normalCore_eq_supᵢ (H : Subgroup G) :
     H.normalCore = ⨆ (N : Subgroup G) (_ : Normal N) (hs : N ≤ H), N :=
   le_antisymm
@@ -4134,7 +4155,6 @@ theorem normalCore_eq_supᵢ (H : Subgroup G) :
       (le_supᵢ_of_le H.normalCore_normal (le_supᵢ_of_le H.normalCore_le le_rfl)))
     (supᵢ_le fun N => supᵢ_le fun hN => supᵢ_le normal_le_normal_core.mpr)
 #align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_supᵢ
--/
 
 #print Subgroup.normalCore_eq_self /-
 @[simp]
@@ -4167,39 +4187,60 @@ def range (f : G →* N) : Subgroup N :=
 #align add_monoid_hom.range AddMonoidHom.range
 -/
 
-#print MonoidHom.coe_range /-
+/- warning: monoid_hom.coe_range -> MonoidHom.coe_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Set.{u2} N) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subgroup.{u2} N _inst_4) (Set.{u2} N) (HasLiftT.mk.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (CoeTCₓ.coe.{succ u2, succ u2} (Subgroup.{u2} N _inst_4) (Set.{u2} N) (SetLike.Set.hasCoeT.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Set.range.{u2, succ u1} N G (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Set.{u1} N) (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Set.range.{u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range MonoidHom.coe_rangeₓ'. -/
 @[simp, to_additive]
 theorem coe_range (f : G →* N) : (f.range : Set N) = Set.range f :=
   rfl
 #align monoid_hom.coe_range MonoidHom.coe_range
 #align add_monoid_hom.coe_range AddMonoidHom.coe_range
--/
 
-#print MonoidHom.mem_range /-
+/- warning: monoid_hom.mem_range -> MonoidHom.mem_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {y : N}, Iff (Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) y (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Exists.{succ u1} G (fun (x : G) => Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) y))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {y : N}, Iff (Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) y (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Exists.{succ u2} G (fun (x : G) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x) y))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_range MonoidHom.mem_rangeₓ'. -/
 @[simp, to_additive]
 theorem mem_range {f : G →* N} {y : N} : y ∈ f.range ↔ ∃ x, f x = y :=
   Iff.rfl
 #align monoid_hom.mem_range MonoidHom.mem_range
 #align add_monoid_hom.mem_range AddMonoidHom.mem_range
--/
 
-#print MonoidHom.range_eq_map /-
+/- warning: monoid_hom.range_eq_map -> MonoidHom.range_eq_map is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.range_eq_map MonoidHom.range_eq_mapₓ'. -/
 @[to_additive]
 theorem range_eq_map (f : G →* N) : f.range = (⊤ : Subgroup G).map f := by ext <;> simp
 #align monoid_hom.range_eq_map MonoidHom.range_eq_map
 #align add_monoid_hom.range_eq_map AddMonoidHom.range_eq_map
--/
 
-#print MonoidHom.restrict_range /-
+/- warning: monoid_hom.restrict_range -> MonoidHom.restrict_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) N _inst_4 (MonoidHom.restrict.{u1, u2, u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) N (Subgroup.{u1} G _inst_1) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.setLike.{u1} G _inst_1) (SubgroupClass.to_submonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.setLike.{u1} G _inst_1) (Subgroup.subgroupClass.{u1} G _inst_1)) f K)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)) (Subgroup.toGroup.{u2} G _inst_1 K) N _inst_4 (MonoidHom.restrict.{u2, u1, u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) N (Subgroup.{u2} G _inst_1) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (SubgroupClass.toSubmonoidClass.{u2, u2} (Subgroup.{u2} G _inst_1) G (Group.toDivInvMonoid.{u2} G _inst_1) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u2} G _inst_1)) f K)) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.restrict_range MonoidHom.restrict_rangeₓ'. -/
 @[simp, to_additive]
 theorem restrict_range (f : G →* N) : (f.restrict K).range = K.map f := by
   simp_rw [SetLike.ext_iff, mem_range, mem_map, restrict_apply, SetLike.exists, Subtype.coe_mk,
     iff_self_iff, forall_const]
 #align monoid_hom.restrict_range MonoidHom.restrict_range
 #align add_monoid_hom.restrict_range AddMonoidHom.restrict_range
--/
 
-#print MonoidHom.rangeRestrict /-
+/- warning: monoid_hom.range_restrict -> MonoidHom.rangeRestrict is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), MonoidHom.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.toSubmonoid.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.range_restrict MonoidHom.rangeRestrictₓ'. -/
 /-- The canonical surjective group homomorphism `G →* f(G)` induced by a group
 homomorphism `G →* N`. -/
 @[to_additive
@@ -4208,59 +4249,87 @@ def rangeRestrict (f : G →* N) : G →* f.range :=
   codRestrict f _ fun x => ⟨x, rfl⟩
 #align monoid_hom.range_restrict MonoidHom.rangeRestrict
 #align add_monoid_hom.range_restrict AddMonoidHom.rangeRestrict
--/
 
-#print MonoidHom.coe_rangeRestrict /-
+/- warning: monoid_hom.coe_range_restrict -> MonoidHom.coe_rangeRestrict is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f) g)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f g)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : G), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f g)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem coe_rangeRestrict (f : G →* N) (g : G) : (f.range_restrict g : N) = f g :=
   rfl
 #align monoid_hom.coe_range_restrict MonoidHom.coe_rangeRestrict
 #align add_monoid_hom.coe_range_restrict AddMonoidHom.coe_rangeRestrict
--/
 
-#print MonoidHom.coe_comp_rangeRestrict /-
+/- warning: monoid_hom.coe_comp_range_restrict -> MonoidHom.coe_comp_rangeRestrict is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{max (succ u1) (succ u2)} (G -> N) (Function.comp.{succ u1, succ u2, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (G -> N) (Function.comp.{succ u2, succ u1, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem coe_comp_rangeRestrict (f : G →* N) :
     (coe : f.range → N) ∘ (⇑f.range_restrict : G → f.range) = f :=
   rfl
 #align monoid_hom.coe_comp_range_restrict MonoidHom.coe_comp_rangeRestrict
 #align add_monoid_hom.coe_comp_range_restrict AddMonoidHom.coe_comp_rangeRestrict
--/
 
-#print MonoidHom.subtype_comp_rangeRestrict /-
+/- warning: monoid_hom.subtype_comp_range_restrict -> MonoidHom.subtype_comp_rangeRestrict is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHom.comp.{u1, u2, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.subtype.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f)) f
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHom.comp.{u2, u1, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.subtype.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f)) f
+Case conversion may be inaccurate. Consider using '#align monoid_hom.subtype_comp_range_restrict MonoidHom.subtype_comp_rangeRestrictₓ'. -/
 @[to_additive]
 theorem subtype_comp_rangeRestrict (f : G →* N) : f.range.Subtype.comp f.range_restrict = f :=
   ext <| f.coe_rangeRestrict
 #align monoid_hom.subtype_comp_range_restrict MonoidHom.subtype_comp_rangeRestrict
 #align add_monoid_hom.subtype_comp_range_restrict AddMonoidHom.subtype_comp_rangeRestrict
--/
 
-#print MonoidHom.rangeRestrict_surjective /-
+/- warning: monoid_hom.range_restrict_surjective -> MonoidHom.rangeRestrict_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Function.Surjective.{succ u1, succ u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (fun (_x : MonoidHom.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Function.Surjective.{succ u2, succ u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.monoidHomClass.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjectiveₓ'. -/
 @[to_additive]
 theorem rangeRestrict_surjective (f : G →* N) : Function.Surjective f.range_restrict :=
   fun ⟨_, g, rfl⟩ => ⟨g, rfl⟩
 #align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjective
 #align add_monoid_hom.range_restrict_surjective AddMonoidHom.rangeRestrict_surjective
--/
 
-#print MonoidHom.map_range /-
+/- warning: monoid_hom.map_range -> MonoidHom.map_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} {P : Type.{u3}} [_inst_4 : Group.{u2} N] [_inst_5 : Group.{u3} P] (g : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u3} (Subgroup.{u3} P _inst_5) (Subgroup.map.{u2, u3} N _inst_4 P _inst_5 g (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.range.{u1, u3} G _inst_1 P _inst_5 (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) g f))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u3}} {P : Type.{u2}} [_inst_4 : Group.{u3} N] [_inst_5 : Group.{u2} P] (g : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5)))) (f : MonoidHom.{u1, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} P _inst_5) (Subgroup.map.{u3, u2} N _inst_4 P _inst_5 g (MonoidHom.range.{u1, u3} G _inst_1 N _inst_4 f)) (MonoidHom.range.{u1, u2} G _inst_1 P _inst_5 (MonoidHom.comp.{u1, u3, u2} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) g f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.map_range MonoidHom.map_rangeₓ'. -/
 @[to_additive]
 theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).range := by
   rw [range_eq_map, range_eq_map] <;> exact (⊤ : Subgroup G).map_map g f
 #align monoid_hom.map_range MonoidHom.map_range
 #align add_monoid_hom.map_range AddMonoidHom.map_range
--/
 
-#print MonoidHom.range_top_iff_surjective /-
+/- warning: monoid_hom.range_top_iff_surjective -> MonoidHom.range_top_iff_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6))) (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjectiveₓ'. -/
 @[to_additive]
 theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
     f.range = (⊤ : Subgroup N) ↔ Function.Surjective f :=
   SetLike.ext'_iff.trans <| Iff.trans (by rw [coe_range, coe_top]) Set.range_iff_surjective
 #align monoid_hom.range_top_iff_surjective MonoidHom.range_top_iff_surjective
 #align add_monoid_hom.range_top_iff_surjective AddMonoidHom.range_top_iff_surjective
--/
 
-#print MonoidHom.range_top_of_surjective /-
+/- warning: monoid_hom.range_top_of_surjective -> MonoidHom.range_top_of_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.hasTop.{u2} N _inst_6)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_6 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_6)))))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_6) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_6 f) (Top.top.{u2} (Subgroup.{u2} N _inst_6) (Subgroup.instTopSubgroup.{u2} N _inst_6)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjectiveₓ'. -/
 /-- The range of a surjective monoid homomorphism is the whole of the codomain. -/
 @[to_additive "The range of a surjective `add_monoid` homomorphism is the whole of the codomain."]
 theorem range_top_of_surjective {N} [Group N] (f : G →* N) (hf : Function.Surjective f) :
@@ -4268,17 +4337,25 @@ theorem range_top_of_surjective {N} [Group N] (f : G →* N) (hf : Function.Surj
   range_top_iff_surjective.2 hf
 #align monoid_hom.range_top_of_surjective MonoidHom.range_top_of_surjective
 #align add_monoid_hom.range_top_of_surjective AddMonoidHom.range_top_of_surjective
--/
 
-#print MonoidHom.range_one /-
+/- warning: monoid_hom.range_one -> MonoidHom.range_one is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 (OfNat.ofNat.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (OfNat.mk.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (One.one.{max u2 u1} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHom.hasOne.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))))) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Eq.{succ u2} (Subgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 (OfNat.ofNat.{max u1 u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) 1 (One.toOfNat1.{max u1 u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (instOneMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))))) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instBotSubgroup.{u2} N _inst_4))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.range_one MonoidHom.range_oneₓ'. -/
 @[simp, to_additive]
 theorem range_one : (1 : G →* N).range = ⊥ :=
   SetLike.ext fun x => by simpa using @comm _ (· = ·) _ 1 x
 #align monoid_hom.range_one MonoidHom.range_one
 #align add_monoid_hom.range_zero AddMonoidHom.range_zero
--/
 
-#print Subgroup.subtype_range /-
+/- warning: subgroup.subtype_range -> Subgroup.subtype_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H)) H
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.range.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H)) H
+Case conversion may be inaccurate. Consider using '#align subgroup.subtype_range Subgroup.subtype_rangeₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.subtype_range (H : Subgroup G) : H.Subtype.range = H :=
   by
@@ -4287,18 +4364,26 @@ theorem Subgroup.subtype_range (H : Subgroup G) : H.Subtype.range = H :=
   simp
 #align subgroup.subtype_range Subgroup.subtype_range
 #align add_subgroup.subtype_range AddSubgroup.subtype_range
--/
 
-#print Subgroup.inclusion_range /-
+/- warning: subgroup.inclusion_range -> Subgroup.inclusion_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h_le : 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)))) H K), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.range.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K h_le)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h_le : 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))))) H K), Eq.{succ 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 K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.range.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.inclusion.{u1} G _inst_1 H K h_le)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)
+Case conversion may be inaccurate. Consider using '#align subgroup.inclusion_range Subgroup.inclusion_rangeₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
     (inclusion h_le).range = H.subgroupOf K :=
   Subgroup.ext fun g => Set.ext_iff.mp (Set.range_inclusion h_le) g
 #align subgroup.inclusion_range Subgroup.inclusion_range
 #align add_subgroup.inclusion_range AddSubgroup.inclusion_range
--/
 
-#print MonoidHom.subgroupOf_range_eq_of_le /-
+/- warning: monoid_hom.subgroup_of_range_eq_of_le -> MonoidHom.subgroupOf_range_eq_of_le is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} [_inst_6 : Group.{u1} G₁] [_inst_7 : Group.{u2} G₂] {K : Subgroup.{u2} G₂ _inst_7} (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (h : LE.le.{u2} (Subgroup.{u2} G₂ _inst_7) (Preorder.toLE.{u2} (Subgroup.{u2} G₂ _inst_7) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G₂ _inst_7) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)))) (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u2} (Subgroup.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u2} G₂ _inst_7 (MonoidHom.range.{u1, u2} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u1, u2} G₁ _inst_6 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G₂ _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Subgroup.setLike.{u2} G₂ _inst_7)) K) (Subgroup.toGroup.{u2} G₂ _inst_7 K) (MonoidHom.codRestrict.{u1, u2, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7))) (Subgroup.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (SubgroupClass.to_submonoidClass.{u2, u2} (Subgroup.{u2} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7) (Subgroup.setLike.{u2} G₂ _inst_7) (Subgroup.subgroupClass.{u2} G₂ _inst_7)) f K (fun (x : G₁) => h (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x) (Exists.intro.{succ u1} G₁ (fun (y : G₁) => Eq.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x)) x (rfl.{succ u2} G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_6))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_7)))) f x))))))
+but is expected to have type
+  forall {G₁ : Type.{u2}} {G₂ : Type.{u1}} [_inst_6 : Group.{u2} G₁] [_inst_7 : Group.{u1} G₂] {K : Subgroup.{u1} G₂ _inst_7} (f : MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (h : LE.le.{u1} (Subgroup.{u1} G₂ _inst_7) (Preorder.toLE.{u1} (Subgroup.{u1} G₂ _inst_7) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₂ _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₂ _inst_7) (Subgroup.instCompleteLatticeSubgroup.{u1} G₂ _inst_7))))) (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K), Eq.{succ u1} (Subgroup.{u1} (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K)) (Subgroup.subgroupOf.{u1} G₂ _inst_7 (MonoidHom.range.{u2, u1} G₁ _inst_6 G₂ _inst_7 f) K) (MonoidHom.range.{u2, u1} G₁ _inst_6 (Subtype.{succ u1} G₂ (fun (x : G₂) => Membership.mem.{u1, u1} G₂ (Subgroup.{u1} G₂ _inst_7) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7)) x K)) (Subgroup.toGroup.{u1} G₂ _inst_7 K) (MonoidHom.codRestrict.{u2, u1, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (Subgroup.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (SubgroupClass.toSubmonoidClass.{u1, u1} (Subgroup.{u1} G₂ _inst_7) G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7) (Subgroup.instSetLikeSubgroup.{u1} G₂ _inst_7) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u1} G₂ _inst_7)) f K (fun (x : G₁) => h (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x) (Exists.intro.{succ u2} G₁ (fun (y : G₁) => Eq.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x)) x (rfl.{succ u1} G₂ (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (MulOneClass.toMul.{u2} G₁ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6)))) (MulOneClass.toMul.{u1} G₂ (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))) G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7))) (MonoidHom.monoidHomClass.{u2, u1} G₁ G₂ (Monoid.toMulOneClass.{u2} G₁ (DivInvMonoid.toMonoid.{u2} G₁ (Group.toDivInvMonoid.{u2} G₁ _inst_6))) (Monoid.toMulOneClass.{u1} G₂ (DivInvMonoid.toMonoid.{u1} G₂ (Group.toDivInvMonoid.{u1} G₂ _inst_7)))))) f x))))))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_leₓ'. -/
 @[to_additive]
 theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
     (f : G₁ →* G₂) (h : f.range ≤ K) :
@@ -4309,9 +4394,13 @@ theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂]
   simp [Subtype.ext_iff]
 #align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_le
 #align add_monoid_hom.add_subgroup_of_range_eq_of_le AddMonoidHom.addSubgroupOf_range_eq_of_le
--/
 
-#print MonoidHom.ofLeftInverse /-
+/- warning: monoid_hom.of_left_inverse -> MonoidHom.ofLeftInverse is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse MonoidHom.ofLeftInverseₓ'. -/
 /-- Computable alternative to `monoid_hom.of_injective`. -/
 @[to_additive "Computable alternative to `add_monoid_hom.of_injective`."]
 def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) : G ≃* f.range :=
@@ -4325,27 +4414,39 @@ def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) :
       rw [coe_range_restrict, Function.comp_apply, Subgroup.coeSubtype, Subtype.coe_mk, h] }
 #align monoid_hom.of_left_inverse MonoidHom.ofLeftInverse
 #align add_monoid_hom.of_left_inverse AddMonoidHom.ofLeftInverse
--/
 
-#print MonoidHom.ofLeftInverse_apply /-
+/- warning: monoid_hom.of_left_inverse_apply -> MonoidHom.ofLeftInverse_apply is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : G), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : G), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) (x : G) :
     ↑(ofLeftInverse h x) = f x :=
   rfl
 #align monoid_hom.of_left_inverse_apply MonoidHom.ofLeftInverse_apply
 #align add_monoid_hom.of_left_inverse_apply AddMonoidHom.ofLeftInverse_apply
--/
 
-#print MonoidHom.ofLeftInverse_symm_apply /-
+/- warning: monoid_hom.of_left_inverse_symm_apply -> MonoidHom.ofLeftInverse_symm_apply is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))} (h : Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (x : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)), Eq.{succ u1} G (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> G) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) G (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u1, u2} G _inst_1 N _inst_4 f g h)) x) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) x))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))} (h : Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (fun (_x : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ofLeftInverse.{u2, u1} G _inst_1 N _inst_4 f g h)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) x))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f)
     (x : f.range) : (ofLeftInverse h).symm x = g x :=
   rfl
 #align monoid_hom.of_left_inverse_symm_apply MonoidHom.ofLeftInverse_symm_apply
 #align add_monoid_hom.of_left_inverse_symm_apply AddMonoidHom.ofLeftInverse_symm_apply
--/
 
-#print MonoidHom.ofInjective /-
+/- warning: monoid_hom.of_injective -> MonoidHom.ofInjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} G (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective MonoidHom.ofInjectiveₓ'. -/
 /-- The range of an injective group homomorphism is isomorphic to its domain. -/
 @[to_additive "The range of an injective additive group homomorphism is isomorphic to its\ndomain."]
 noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃* f.range :=
@@ -4356,16 +4457,19 @@ noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃
       exact ⟨y, rfl⟩⟩
 #align monoid_hom.of_injective MonoidHom.ofInjective
 #align add_monoid_hom.of_injective AddMonoidHom.ofInjective
--/
 
-#print MonoidHom.ofInjective_apply /-
+/- warning: monoid_hom.of_injective_apply -> MonoidHom.ofInjective_apply is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) {x : G}, Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (fun (_x : MulEquiv.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) => G -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MulEquiv.hasCoeToFun.{u1, u2} G (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.mul.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))) (MonoidHom.ofInjective.{u1, u2} G _inst_1 N _inst_4 f hf) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) {x : G}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (Subgroup.mul.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)))))) (MonoidHom.ofInjective.{u2, u1} G _inst_1 N _inst_4 f hf) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f x)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.of_injective_apply MonoidHom.ofInjective_applyₓ'. -/
 @[to_additive]
 theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
     ↑(ofInjective hf x) = f x :=
   rfl
 #align monoid_hom.of_injective_apply MonoidHom.ofInjective_apply
 #align add_monoid_hom.of_injective_apply AddMonoidHom.ofInjective_apply
--/
 
 section Ker
 
@@ -4387,23 +4491,36 @@ def ker (f : G →* M) : Subgroup G :=
 #align add_monoid_hom.ker AddMonoidHom.ker
 -/
 
-#print MonoidHom.mem_ker /-
+/- warning: monoid_hom.mem_ker -> MonoidHom.mem_ker is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6)))))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G}, Iff (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) (MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) _inst_6))))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.mem_ker MonoidHom.mem_kerₓ'. -/
 @[to_additive]
 theorem mem_ker (f : G →* M) {x : G} : x ∈ f.ker ↔ f x = 1 :=
   Iff.rfl
 #align monoid_hom.mem_ker MonoidHom.mem_ker
 #align add_monoid_hom.mem_ker AddMonoidHom.mem_ker
--/
 
-#print MonoidHom.coe_ker /-
+/- warning: monoid_hom.coe_ker -> MonoidHom.coe_ker is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f)) (Set.preimage.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f) (Singleton.singleton.{u2, u2} M (Set.{u2} M) (Set.hasSingleton.{u2} M) (OfNat.ofNat.{u2} M 1 (OfNat.mk.{u2} M 1 (One.one.{u2} M (MulOneClass.toHasOne.{u2} M _inst_6))))))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Eq.{succ u2} (Set.{u2} G) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f)) (Set.preimage.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f) (Singleton.singleton.{u1, u1} M (Set.{u1} M) (Set.instSingletonSet.{u1} M) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M _inst_6)))))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.coe_ker MonoidHom.coe_kerₓ'. -/
 @[to_additive]
 theorem coe_ker (f : G →* M) : (f.ker : Set G) = (f : G → M) ⁻¹' {1} :=
   rfl
 #align monoid_hom.coe_ker MonoidHom.coe_ker
 #align add_monoid_hom.coe_ker AddMonoidHom.coe_ker
--/
 
-#print MonoidHom.ker_toHomUnits /-
+/- warning: monoid_hom.ker_to_hom_units -> MonoidHom.ker_toHomUnits is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_7 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_7)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Units.{u2} M _inst_7) (Units.mulOneClass.{u2} M _inst_7) (MonoidHom.toHomUnits.{u1, u2} G M _inst_1 _inst_7 f)) (MonoidHom.ker.{u1, u2} G _inst_1 M (Monoid.toMulOneClass.{u2} M _inst_7) f)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_7 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_7)), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Units.{u2} M _inst_7) (Units.instMulOneClassUnits.{u2} M _inst_7) (MonoidHom.toHomUnits.{u1, u2} G M _inst_1 _inst_7 f)) (MonoidHom.ker.{u1, u2} G _inst_1 M (Monoid.toMulOneClass.{u2} M _inst_7) f)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_to_hom_units MonoidHom.ker_toHomUnitsₓ'. -/
 @[simp, to_additive]
 theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker :=
   by
@@ -4411,9 +4528,13 @@ theorem ker_toHomUnits {M} [Monoid M] (f : G →* M) : f.toHomUnits.ker = f.ker
   simp [mem_ker, Units.ext_iff]
 #align monoid_hom.ker_to_hom_units MonoidHom.ker_toHomUnits
 #align add_monoid_hom.ker_to_hom_add_units AddMonoidHom.ker_toHomAddUnits
--/
 
-#print MonoidHom.eq_iff /-
+/- warning: monoid_hom.eq_iff -> MonoidHom.eq_iff is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f y)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) y) x) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) {x : G} {y : G}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f y)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (HMul.hMul.{u2, u2, u2} G G G (instHMul.{u2} G (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) (Inv.inv.{u2} G (InvOneClass.toInv.{u2} G (DivInvOneMonoid.toInvOneClass.{u2} G (DivisionMonoid.toDivInvOneMonoid.{u2} G (Group.toDivisionMonoid.{u2} G _inst_1)))) y) x) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_iff MonoidHom.eq_iffₓ'. -/
 @[to_additive]
 theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
   by
@@ -4422,99 +4543,147 @@ theorem eq_iff (f : G →* M) {x y : G} : f x = f y ↔ y⁻¹ * x ∈ f.ker :=
   · rw [← one_mul x, ← mul_inv_self y, mul_assoc, map_mul, f.mem_ker.1 h, mul_one]
 #align monoid_hom.eq_iff MonoidHom.eq_iff
 #align add_monoid_hom.eq_iff AddMonoidHom.eq_iff
--/
 
-#print MonoidHom.decidableMemKer /-
+/- warning: monoid_hom.decidable_mem_ker -> MonoidHom.decidableMemKer is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] [_inst_7 : DecidableEq.{succ u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), DecidablePred.{succ u1} G (fun (_x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) _x (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] [_inst_7 : DecidableEq.{succ u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), DecidablePred.{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 (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.decidable_mem_ker MonoidHom.decidableMemKerₓ'. -/
 @[to_additive]
 instance decidableMemKer [DecidableEq M] (f : G →* M) : DecidablePred (· ∈ f.ker) := fun x =>
   decidable_of_iff (f x = 1) f.mem_ker
 #align monoid_hom.decidable_mem_ker MonoidHom.decidableMemKer
 #align add_monoid_hom.decidable_mem_ker AddMonoidHom.decidableMemKer
--/
 
-#print MonoidHom.comap_ker /-
+/- warning: monoid_hom.comap_ker -> MonoidHom.comap_ker is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} {P : Type.{u3}} [_inst_4 : Group.{u2} N] [_inst_5 : Group.{u3} P] (g : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5)))) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (MonoidHom.ker.{u2, u3} N _inst_4 P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) g)) (MonoidHom.ker.{u1, u3} G _inst_1 P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) (MonoidHom.comp.{u1, u2, u3} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P _inst_5))) g f))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u3}} {P : Type.{u2}} [_inst_4 : Group.{u3} N] [_inst_5 : Group.{u2} P] (g : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5)))) (f : MonoidHom.{u1, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u3} G _inst_1 N _inst_4 f (MonoidHom.ker.{u3, u2} N _inst_4 P (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) g)) (MonoidHom.ker.{u1, u2} G _inst_1 P (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) (MonoidHom.comp.{u1, u3, u2} G N P (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} N (DivInvMonoid.toMonoid.{u3} N (Group.toDivInvMonoid.{u3} N _inst_4))) (Monoid.toMulOneClass.{u2} P (DivInvMonoid.toMonoid.{u2} P (Group.toDivInvMonoid.{u2} P _inst_5))) g f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.comap_ker MonoidHom.comap_kerₓ'. -/
 @[to_additive]
 theorem comap_ker (g : N →* P) (f : G →* N) : g.ker.comap f = (g.comp f).ker :=
   rfl
 #align monoid_hom.comap_ker MonoidHom.comap_ker
 #align add_monoid_hom.comap_ker AddMonoidHom.comap_ker
--/
 
-#print MonoidHom.comap_bot /-
+/- warning: monoid_hom.comap_bot -> MonoidHom.comap_bot is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.comap_bot MonoidHom.comap_botₓ'. -/
 @[simp, to_additive]
 theorem comap_bot (f : G →* N) : (⊥ : Subgroup N).comap f = f.ker :=
   rfl
 #align monoid_hom.comap_bot MonoidHom.comap_bot
 #align add_monoid_hom.comap_bot AddMonoidHom.comap_bot
--/
 
-#print MonoidHom.ker_restrict /-
+/- warning: monoid_hom.ker_restrict -> MonoidHom.ker_restrict is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (K : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (MonoidHom.ker.{u1, u2} (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.restrict.{u1, u2, u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) N (Subgroup.{u1} G _inst_1) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Subgroup.setLike.{u1} G _inst_1) (SubgroupClass.to_submonoidClass.{u1, u1} (Subgroup.{u1} G _inst_1) G (Group.toDivInvMonoid.{u1} G _inst_1) (Subgroup.setLike.{u1} G _inst_1) (Subgroup.subgroupClass.{u1} G _inst_1)) f K)) (Subgroup.subgroupOf.{u1} G _inst_1 (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (K : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)) (Subgroup.toGroup.{u2} G _inst_1 K)) (MonoidHom.ker.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x K)) (Subgroup.toGroup.{u2} G _inst_1 K) N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.restrict.{u2, u1, u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) N (Subgroup.{u2} G _inst_1) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (SubgroupClass.toSubmonoidClass.{u2, u2} (Subgroup.{u2} G _inst_1) G (Group.toDivInvMonoid.{u2} G _inst_1) (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.instSubgroupClassSubgroupToDivInvMonoidInstSetLikeSubgroup.{u2} G _inst_1)) f K)) (Subgroup.subgroupOf.{u2} G _inst_1 (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_restrict MonoidHom.ker_restrictₓ'. -/
 @[simp, to_additive]
 theorem ker_restrict (f : G →* N) : (f.restrict K).ker = f.ker.subgroupOf K :=
   rfl
 #align monoid_hom.ker_restrict MonoidHom.ker_restrict
 #align add_monoid_hom.ker_restrict AddMonoidHom.ker_restrict
--/
 
-#print MonoidHom.ker_codRestrict /-
+/- warning: monoid_hom.ker_cod_restrict -> MonoidHom.ker_codRestrict is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.Mem.{u2, u3} N S (SetLike.hasMem.{u3, u2} S N _inst_7) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (coeSort.{succ u3, succ (succ u2)} S Type.{u2} (SetLike.hasCoeToSort.{u3, u2} S N _inst_7) s) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {S : Type.{u3}} [_inst_7 : SetLike.{u3, u2} S N] [_inst_8 : SubmonoidClass.{u3, u2} S N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) _inst_7] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : S) (h : forall (x : G), Membership.mem.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) x) S (SetLike.instMembership.{u3, u2} S N _inst_7) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f x) s), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u3} N S (SetLike.instMembership.{u3, u2} S N _inst_7) x s)) (SubmonoidClass.toMulOneClass.{u2, u3} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 s) (MonoidHom.codRestrict.{u1, u2, u3} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) S _inst_7 _inst_8 f s h)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrictₓ'. -/
 @[simp, to_additive]
 theorem ker_codRestrict {S} [SetLike S N] [SubmonoidClass S N] (f : G →* N) (s : S)
     (h : ∀ x, f x ∈ s) : (f.codRestrict s h).ker = f.ker :=
   SetLike.ext fun x => Subtype.ext_iff
 #align monoid_hom.ker_cod_restrict MonoidHom.ker_codRestrict
 #align add_monoid_hom.ker_cod_restrict AddMonoidHom.ker_codRestrict
--/
 
-#print MonoidHom.ker_rangeRestrict /-
+/- warning: monoid_hom.ker_range_restrict -> MonoidHom.ker_rangeRestrict is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Subgroup.toGroup.{u2} N _inst_4 (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f))))) (MonoidHom.rangeRestrict.{u1, u2} G _inst_1 N _inst_4 f)) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f))) (MonoidHom.rangeRestrict.{u2, u1} G _inst_1 N _inst_4 f)) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_range_restrict MonoidHom.ker_rangeRestrictₓ'. -/
 @[simp, to_additive]
 theorem ker_rangeRestrict (f : G →* N) : ker (rangeRestrict f) = ker f :=
   ker_codRestrict _ _ _
 #align monoid_hom.ker_range_restrict MonoidHom.ker_rangeRestrict
 #align add_monoid_hom.ker_range_restrict AddMonoidHom.ker_rangeRestrict
--/
 
-#print MonoidHom.ker_one /-
+/- warning: monoid_hom.ker_one -> MonoidHom.ker_one is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M], Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 (OfNat.ofNat.{max u2 u1} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) 1 (OfNat.mk.{max u2 u1} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) 1 (One.one.{max u2 u1} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (MonoidHom.hasOne.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6))))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M], Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 (OfNat.ofNat.{max u2 u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) 1 (One.toOfNat1.{max u2 u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) (instOneMonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6)))) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_one MonoidHom.ker_oneₓ'. -/
 @[simp, to_additive]
 theorem ker_one : (1 : G →* M).ker = ⊤ :=
   SetLike.ext fun x => eq_self_iff_true _
 #align monoid_hom.ker_one MonoidHom.ker_one
 #align add_monoid_hom.ker_zero AddMonoidHom.ker_zero
--/
 
-#print MonoidHom.ker_id /-
+/- warning: monoid_hom.ker_id -> MonoidHom.ker_id 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) (MonoidHom.ker.{u1, u1} G _inst_1 G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.id.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{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) (MonoidHom.ker.{u1, u1} G _inst_1 G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.id.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instBotSubgroup.{u1} G _inst_1))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_id MonoidHom.ker_idₓ'. -/
 @[simp, to_additive]
 theorem ker_id : (MonoidHom.id G).ker = ⊥ :=
   rfl
 #align monoid_hom.ker_id MonoidHom.ker_id
 #align add_monoid_hom.ker_id AddMonoidHom.ker_id
--/
 
-#print MonoidHom.ker_eq_bot_iff /-
+/- warning: monoid_hom.ker_eq_bot_iff -> MonoidHom.ker_eq_bot_iff is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : MulOneClass.{u2} M] (f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6), Iff (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 M _inst_6 f) (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))) (Function.Injective.{succ u1, succ u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) _inst_6) f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : MulOneClass.{u1} M] (f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6), Iff (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.ker.{u2, u1} G _inst_1 M _inst_6 f) (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))) (Function.Injective.{succ u2, succ u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6 (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) _inst_6))) f))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem ker_eq_bot_iff (f : G →* M) : f.ker = ⊥ ↔ Function.Injective f :=
   ⟨fun h x y hxy => by rwa [eq_iff, h, mem_bot, inv_mul_eq_one, eq_comm] at hxy, fun h =>
     bot_unique fun x hx => h (hx.trans f.map_one.symm)⟩
 #align monoid_hom.ker_eq_bot_iff MonoidHom.ker_eq_bot_iff
 #align add_monoid_hom.ker_eq_bot_iff AddMonoidHom.ker_eq_bot_iff
--/
 
-#print Subgroup.ker_subtype /-
+/- warning: subgroup.ker_subtype -> Subgroup.ker_subtype is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 H)) (Bot.bot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasBot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.subtype.{u1} G _inst_1 H)) (Bot.bot.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instBotSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.ker_subtype Subgroup.ker_subtypeₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.ker_subtype (H : Subgroup G) : H.Subtype.ker = ⊥ :=
   H.Subtype.ker_eq_bot_iff.mpr Subtype.coe_injective
 #align subgroup.ker_subtype Subgroup.ker_subtype
 #align add_subgroup.ker_subtype AddSubgroup.ker_subtype
--/
 
-#print Subgroup.ker_inclusion /-
+/- warning: subgroup.ker_inclusion -> Subgroup.ker_inclusion is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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)))) H K), Eq.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (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)) K) (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)) K) (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)) K) (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)) K) (Subgroup.toGroup.{u1} G _inst_1 K)))) (Subgroup.inclusion.{u1} G _inst_1 H K h)) (Bot.bot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.hasBot.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (h : 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))))) H K), Eq.{succ 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (MonoidHom.ker.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (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 K)) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 K)) (Subgroup.inclusion.{u1} G _inst_1 H K h)) (Bot.bot.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)) (Subgroup.instBotSubgroup.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.ker_inclusion Subgroup.ker_inclusionₓ'. -/
 @[simp, to_additive]
 theorem Subgroup.ker_inclusion {H K : Subgroup G} (h : H ≤ K) : (inclusion h).ker = ⊥ :=
   (inclusion h).ker_eq_bot_iff.mpr (Set.inclusion_injective h)
 #align subgroup.ker_inclusion Subgroup.ker_inclusion
 #align add_subgroup.ker_inclusion AddSubgroup.ker_inclusion
--/
 
-#print MonoidHom.prodMap_comap_prod /-
+/- warning: monoid_hom.prod_map_comap_prod -> MonoidHom.prodMap_comap_prod is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {G' : Type.{u3}} {N' : Type.{u4}} [_inst_7 : Group.{u3} G'] [_inst_8 : Group.{u4} N'] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : MonoidHom.{u3, u4} G' N' (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8)))) (S : Subgroup.{u2} N _inst_4) (S' : Subgroup.{u4} N' _inst_8), Eq.{succ (max u1 u3)} (Subgroup.{max u1 u3} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7)) (Subgroup.comap.{max u1 u3, max u2 u4} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7) (Prod.{u2, u4} N N') (Prod.group.{u2, u4} N N' _inst_4 _inst_8) (MonoidHom.prodMap.{u1, u3, u2, u4} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) N N' (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8))) f g) (Subgroup.prod.{u2, u4} N _inst_4 N' _inst_8 S S')) (Subgroup.prod.{u1, u3} G _inst_1 G' _inst_7 (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f S) (Subgroup.comap.{u3, u4} G' _inst_7 N' _inst_8 g S'))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {G' : Type.{u4}} {N' : Type.{u3}} [_inst_7 : Group.{u4} G'] [_inst_8 : Group.{u3} N'] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : MonoidHom.{u4, u3} G' N' (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8)))) (S : Subgroup.{u1} N _inst_4) (S' : Subgroup.{u3} N' _inst_8), Eq.{max (succ u2) (succ u4)} (Subgroup.{max u2 u4} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7)) (Subgroup.comap.{max u2 u4, max u1 u3} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7) (Prod.{u1, u3} N N') (Prod.instGroupProd.{u1, u3} N N' _inst_4 _inst_8) (MonoidHom.prodMap.{u2, u4, u1, u3} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) N N' (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8))) f g) (Subgroup.prod.{u1, u3} N _inst_4 N' _inst_8 S S')) (Subgroup.prod.{u2, u4} G _inst_1 G' _inst_7 (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f S) (Subgroup.comap.{u4, u3} G' _inst_7 N' _inst_8 g S'))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.prod_map_comap_prod MonoidHom.prodMap_comap_prodₓ'. -/
 @[to_additive]
 theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N)
     (g : G' →* N') (S : Subgroup N) (S' : Subgroup N') :
@@ -4522,16 +4691,19 @@ theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f
   SetLike.coe_injective <| Set.preimage_prod_map_prod f g _ _
 #align monoid_hom.prod_map_comap_prod MonoidHom.prodMap_comap_prod
 #align add_monoid_hom.sum_map_comap_sum AddMonoidHom.sumMap_comap_sum
--/
 
-#print MonoidHom.ker_prodMap /-
+/- warning: monoid_hom.ker_prod_map -> MonoidHom.ker_prodMap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {G' : Type.{u3}} {N' : Type.{u4}} [_inst_7 : Group.{u3} G'] [_inst_8 : Group.{u4} N'] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (g : MonoidHom.{u3, u4} G' N' (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8)))), Eq.{succ (max u1 u3)} (Subgroup.{max u1 u3} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7)) (MonoidHom.ker.{max u1 u3, max u2 u4} (Prod.{u1, u3} G G') (Prod.group.{u1, u3} G G' _inst_1 _inst_7) (Prod.{u2, u4} N N') (Prod.mulOneClass.{u2, u4} N N' (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8)))) (MonoidHom.prodMap.{u1, u3, u2, u4} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u3} G' (DivInvMonoid.toMonoid.{u3} G' (Group.toDivInvMonoid.{u3} G' _inst_7))) N N' (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8))) f g)) (Subgroup.prod.{u1, u3} G _inst_1 G' _inst_7 (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (MonoidHom.ker.{u3, u4} G' _inst_7 N' (Monoid.toMulOneClass.{u4} N' (DivInvMonoid.toMonoid.{u4} N' (Group.toDivInvMonoid.{u4} N' _inst_8))) g))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {G' : Type.{u4}} {N' : Type.{u3}} [_inst_7 : Group.{u4} G'] [_inst_8 : Group.{u3} N'] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (g : MonoidHom.{u4, u3} G' N' (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8)))), Eq.{max (succ u2) (succ u4)} (Subgroup.{max u2 u4} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7)) (MonoidHom.ker.{max u2 u4, max u1 u3} (Prod.{u2, u4} G G') (Prod.instGroupProd.{u2, u4} G G' _inst_1 _inst_7) (Prod.{u1, u3} N N') (Prod.instMulOneClassProd.{u1, u3} N N' (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8)))) (MonoidHom.prodMap.{u2, u4, u1, u3} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u4} G' (DivInvMonoid.toMonoid.{u4} G' (Group.toDivInvMonoid.{u4} G' _inst_7))) N N' (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8))) f g)) (Subgroup.prod.{u2, u4} G _inst_1 G' _inst_7 (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) (MonoidHom.ker.{u4, u3} G' _inst_7 N' (Monoid.toMulOneClass.{u3} N' (DivInvMonoid.toMonoid.{u3} N' (Group.toDivInvMonoid.{u3} N' _inst_8))) g))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.ker_prod_map MonoidHom.ker_prodMapₓ'. -/
 @[to_additive]
 theorem ker_prodMap {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N) (g : G' →* N') :
     (prodMap f g).ker = f.ker.Prod g.ker := by
   rw [← comap_bot, ← comap_bot, ← comap_bot, ← prod_map_comap_prod, bot_prod_bot]
 #align monoid_hom.ker_prod_map MonoidHom.ker_prodMap
 #align add_monoid_hom.ker_sum_map AddMonoidHom.ker_sumMap
--/
 
 #print MonoidHom.normal_ker /-
 @[to_additive]
@@ -4557,15 +4729,24 @@ def eqLocus (f g : G →* M) : Subgroup G :=
 #align add_monoid_hom.eq_locus AddMonoidHom.eqLocus
 -/
 
-#print MonoidHom.eqLocus_same /-
+/- warning: monoid_hom.eq_locus_same -> MonoidHom.eqLocus_same is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (MonoidHom.eqLocus.{u1, u2} G _inst_1 N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)) f f) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (MonoidHom.eqLocus.{u2, u1} G _inst_1 N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)) f f) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_locus_same MonoidHom.eqLocus_sameₓ'. -/
 @[simp, to_additive]
 theorem eqLocus_same (f : G →* N) : f.eqLocus f = ⊤ :=
   SetLike.ext fun _ => eq_self_iff_true _
 #align monoid_hom.eq_locus_same MonoidHom.eqLocus_same
 #align add_monoid_hom.eq_locus_same AddMonoidHom.eqLocus_same
--/
 
-#print MonoidHom.eqOn_closure /-
+/- warning: monoid_hom.eq_on_closure -> MonoidHom.eqOn_closure is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {s : Set.{u1} G}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Subgroup.closure.{u1} G _inst_1 s)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {s : Set.{u2} G}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_on_closure MonoidHom.eqOn_closureₓ'. -/
 /-- If two monoid homomorphisms are equal on a set, then they are equal on its subgroup closure. -/
 @[to_additive
       "If two monoid homomorphisms are equal on a set, then they are equal on its subgroup\nclosure."]
@@ -4573,35 +4754,51 @@ theorem eqOn_closure {f g : G →* M} {s : Set G} (h : Set.EqOn f g s) : Set.EqO
   show closure s ≤ f.eqLocus g from (closure_le _).2 h
 #align monoid_hom.eq_on_closure MonoidHom.eqOn_closure
 #align add_monoid_hom.eq_on_closure AddMonoidHom.eqOn_closure
--/
 
-#print MonoidHom.eq_of_eqOn_top /-
+/- warning: monoid_hom.eq_of_eq_on_top -> MonoidHom.eq_of_eqOn_top is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1)))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_topₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_top {f g : G →* M} (h : Set.EqOn f g (⊤ : Subgroup G)) : f = g :=
   ext fun x => h trivial
 #align monoid_hom.eq_of_eq_on_top MonoidHom.eq_of_eqOn_top
 #align add_monoid_hom.eq_of_eq_on_top AddMonoidHom.eq_of_eqOn_top
--/
 
-#print MonoidHom.eq_of_eqOn_dense /-
+/- warning: monoid_hom.eq_of_eq_on_dense -> MonoidHom.eq_of_eqOn_dense is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {M : Type.{u2}} [_inst_6 : Monoid.{u2} M] {s : Set.{u1} G}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.closure.{u1} G _inst_1 s) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1))) -> (forall {f : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)} {g : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)}, (Set.EqOn.{u1, u2} G M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) (fun (_x : MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) => G -> M) (MonoidHom.hasCoeToFun.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G M (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} M _inst_6)) f g))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {M : Type.{u1}} [_inst_6 : Monoid.{u1} M] {s : Set.{u2} G}, (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.closure.{u2} G _inst_1 s) (Top.top.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instTopSubgroup.{u2} G _inst_1))) -> (forall {f : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)} {g : MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)}, (Set.EqOn.{u2, u1} G M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6) (MonoidHom.monoidHomClass.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)))) g) s) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} M _inst_6)) f g))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_of_eq_on_dense MonoidHom.eq_of_eqOn_denseₓ'. -/
 @[to_additive]
 theorem eq_of_eqOn_dense {s : Set G} (hs : closure s = ⊤) {f g : G →* M} (h : s.EqOn f g) : f = g :=
   eq_of_eqOn_top <| hs ▸ eqOn_closure h
 #align monoid_hom.eq_of_eq_on_dense MonoidHom.eq_of_eqOn_dense
 #align add_monoid_hom.eq_of_eq_on_dense AddMonoidHom.eq_of_eqOn_dense
--/
 
 end EqLocus
 
-#print MonoidHom.closure_preimage_le /-
+/- warning: monoid_hom.closure_preimage_le -> MonoidHom.closure_preimage_le is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u2} N), 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)))) (Subgroup.closure.{u1} G _inst_1 (Set.preimage.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} N _inst_4 s))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u1} N), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.closure.{u2} G _inst_1 (Set.preimage.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s)) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} N _inst_4 s))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_leₓ'. -/
 @[to_additive]
 theorem closure_preimage_le (f : G →* N) (s : Set N) : closure (f ⁻¹' s) ≤ (closure s).comap f :=
   (closure_le _).2 fun x hx => by rw [SetLike.mem_coe, mem_comap] <;> exact subset_closure hx
 #align monoid_hom.closure_preimage_le MonoidHom.closure_preimage_le
 #align add_monoid_hom.closure_preimage_le AddMonoidHom.closure_preimage_le
--/
 
-#print MonoidHom.map_closure /-
+/- warning: monoid_hom.map_closure -> MonoidHom.map_closure is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (s : Set.{u1} G), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.closure.{u2} N _inst_4 (Set.image.{u1, u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f) s))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (s : Set.{u2} G), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.closure.{u2} G _inst_1 s)) (Subgroup.closure.{u1} N _inst_4 (Set.image.{u2, u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f) s))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.map_closure MonoidHom.map_closureₓ'. -/
 /-- The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup
 generated by the image of the set. -/
 @[to_additive
@@ -4611,7 +4808,6 @@ theorem map_closure (f : G →* N) (s : Set G) : (closure s).map f = closure (f
     (Subgroup.gi G).gc fun t => rfl
 #align monoid_hom.map_closure MonoidHom.map_closure
 #align add_monoid_hom.map_closure AddMonoidHom.map_closure
--/
 
 end MonoidHom
 
@@ -4619,7 +4815,12 @@ namespace Subgroup
 
 variable {N : Type _} [Group N] (H : Subgroup G)
 
-#print Subgroup.Normal.map /-
+/- warning: subgroup.normal.map -> Subgroup.Normal.map is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Subgroup.Normal.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {H : Subgroup.{u2} G _inst_1}, (Subgroup.Normal.{u2} G _inst_1 H) -> (forall (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))), (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Subgroup.Normal.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.normal.map Subgroup.Normal.mapₓ'. -/
 @[to_additive]
 theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function.Surjective f) :
     (H.map f).Normal :=
@@ -4629,23 +4830,30 @@ theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function
   exact le_normalizer_map _
 #align subgroup.normal.map Subgroup.Normal.map
 #align add_subgroup.normal.map AddSubgroup.Normal.map
--/
 
-#print Subgroup.map_eq_bot_iff /-
+/- warning: subgroup.map_eq_bot_iff -> Subgroup.map_eq_bot_iff is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (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)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff Subgroup.map_eq_bot_iffₓ'. -/
 @[to_additive]
 theorem map_eq_bot_iff {f : G →* N} : H.map f = ⊥ ↔ H ≤ f.ker :=
   (gc_map_comap f).l_eq_bot
 #align subgroup.map_eq_bot_iff Subgroup.map_eq_bot_iff
 #align add_subgroup.map_eq_bot_iff AddSubgroup.map_eq_bot_iff
--/
 
-#print Subgroup.map_eq_bot_iff_of_injective /-
+/- warning: subgroup.map_eq_bot_iff_of_injective -> Subgroup.map_eq_bot_iff_of_injective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Bot.bot.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasBot.{u2} N _inst_4))) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H (Bot.bot.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasBot.{u1} G _inst_1))))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Bot.bot.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instBotSubgroup.{u1} N _inst_4))) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H (Bot.bot.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instBotSubgroup.{u2} G _inst_1))))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_bot_iff_of_injective Subgroup.map_eq_bot_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_eq_bot_iff_of_injective {f : G →* N} (hf : Function.Injective f) :
     H.map f = ⊥ ↔ H = ⊥ := by rw [map_eq_bot_iff, f.ker_eq_bot_iff.mpr hf, le_bot_iff]
 #align subgroup.map_eq_bot_iff_of_injective Subgroup.map_eq_bot_iff_of_injective
 #align add_subgroup.map_eq_bot_iff_of_injective AddSubgroup.map_eq_bot_iff_of_injective
--/
 
 end Subgroup
 
@@ -4655,56 +4863,85 @@ open MonoidHom
 
 variable {N : Type _} [Group N] (f : G →* N)
 
-#print Subgroup.map_le_range /-
+/- warning: subgroup.map_le_range -> Subgroup.map_le_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)
+Case conversion may be inaccurate. Consider using '#align subgroup.map_le_range Subgroup.map_le_rangeₓ'. -/
 @[to_additive]
 theorem map_le_range (H : Subgroup G) : map f H ≤ f.range :=
   (range_eq_map f).symm ▸ map_mono le_top
 #align subgroup.map_le_range Subgroup.map_le_range
 #align add_subgroup.map_le_range AddSubgroup.map_le_range
--/
 
-#print Subgroup.map_subtype_le /-
+/- warning: subgroup.map_subtype_le -> Subgroup.map_subtype_le is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} (K : 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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)), 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)))) (Subgroup.map.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H) K) H
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} (K : 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 H)) (Subgroup.toGroup.{u1} G _inst_1 H)), 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))))) (Subgroup.map.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) G _inst_1 (Subgroup.subtype.{u1} G _inst_1 H) K) H
+Case conversion may be inaccurate. Consider using '#align subgroup.map_subtype_le Subgroup.map_subtype_leₓ'. -/
 @[to_additive]
 theorem map_subtype_le {H : Subgroup G} (K : Subgroup H) : K.map H.Subtype ≤ H :=
   (K.map_le_range H.Subtype).trans (le_of_eq H.subtype_range)
 #align subgroup.map_subtype_le Subgroup.map_subtype_le
 #align add_subgroup.map_subtype_le AddSubgroup.map_subtype_le
--/
 
-#print Subgroup.ker_le_comap /-
+/- warning: subgroup.ker_le_comap -> Subgroup.ker_le_comap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), 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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), 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))))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)
+Case conversion may be inaccurate. Consider using '#align subgroup.ker_le_comap Subgroup.ker_le_comapₓ'. -/
 @[to_additive]
 theorem ker_le_comap (H : Subgroup N) : f.ker ≤ comap f H :=
   comap_bot f ▸ comap_mono bot_le
 #align subgroup.ker_le_comap Subgroup.ker_le_comap
 #align add_subgroup.ker_le_comap AddSubgroup.ker_le_comap
--/
 
-#print Subgroup.map_comap_le /-
+/- warning: subgroup.map_comap_le -> Subgroup.map_comap_le is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H
+Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_le Subgroup.map_comap_leₓ'. -/
 @[to_additive]
 theorem map_comap_le (H : Subgroup N) : map f (comap f H) ≤ H :=
   (gc_map_comap f).l_u_le _
 #align subgroup.map_comap_le Subgroup.map_comap_le
 #align add_subgroup.map_comap_le AddSubgroup.map_comap_le
--/
 
-#print Subgroup.le_comap_map /-
+/- warning: subgroup.le_comap_map -> Subgroup.le_comap_map is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), 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)))) H (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))
+Case conversion may be inaccurate. Consider using '#align subgroup.le_comap_map Subgroup.le_comap_mapₓ'. -/
 @[to_additive]
 theorem le_comap_map (H : Subgroup G) : H ≤ comap f (map f H) :=
   (gc_map_comap f).le_u_l _
 #align subgroup.le_comap_map Subgroup.le_comap_map
 #align add_subgroup.le_comap_map AddSubgroup.le_comap_map
--/
 
-#print Subgroup.map_comap_eq /-
+/- warning: subgroup.map_comap_eq -> Subgroup.map_comap_eq is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.hasInf.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) (HasInf.inf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instHasInfSubgroup.{u2} N _inst_4) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f) H)
+Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq Subgroup.map_comap_eqₓ'. -/
 @[to_additive]
 theorem map_comap_eq (H : Subgroup N) : map f (comap f H) = f.range ⊓ H :=
   SetLike.ext' <| by
     rw [coe_map, coe_comap, Set.image_preimage_eq_inter_range, coe_inf, coe_range, Set.inter_comm]
 #align subgroup.map_comap_eq Subgroup.map_comap_eq
 #align add_subgroup.map_comap_eq AddSubgroup.map_comap_eq
--/
 
-#print Subgroup.comap_map_eq /-
+/- warning: subgroup.comap_map_eq -> Subgroup.comap_map_eq is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq Subgroup.comap_map_eqₓ'. -/
 @[to_additive]
 theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
   by
@@ -4715,144 +4952,212 @@ theorem comap_map_eq (H : Subgroup G) : comap f (map f H) = H ⊔ f.ker :=
   exact mul_mem_sup hy (by simp [mem_ker, hy'])
 #align subgroup.comap_map_eq Subgroup.comap_map_eq
 #align add_subgroup.comap_map_eq AddSubgroup.comap_map_eq
--/
 
-#print Subgroup.map_comap_eq_self /-
+/- warning: subgroup.map_comap_eq_self -> Subgroup.map_comap_eq_self is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) H (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self Subgroup.map_comap_eq_selfₓ'. -/
 @[to_additive]
 theorem map_comap_eq_self {f : G →* N} {H : Subgroup N} (h : H ≤ f.range) : map f (comap f H) = H :=
   by rwa [map_comap_eq, inf_eq_right]
 #align subgroup.map_comap_eq_self Subgroup.map_comap_eq_self
 #align add_subgroup.map_comap_eq_self AddSubgroup.map_comap_eq_self
--/
 
-#print Subgroup.map_comap_eq_self_of_surjective /-
+/- warning: subgroup.map_comap_eq_self_of_surjective -> Subgroup.map_comap_eq_self_of_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u2} N _inst_4), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H)) H)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u1} N _inst_4), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+Case conversion may be inaccurate. Consider using '#align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjectiveₓ'. -/
 @[to_additive]
 theorem map_comap_eq_self_of_surjective {f : G →* N} (h : Function.Surjective f) (H : Subgroup N) :
     map f (comap f H) = H :=
   map_comap_eq_self ((range_top_of_surjective _ h).symm ▸ le_top)
 #align subgroup.map_comap_eq_self_of_surjective Subgroup.map_comap_eq_self_of_surjective
 #align add_subgroup.map_comap_eq_self_of_surjective AddSubgroup.map_comap_eq_self_of_surjective
--/
 
-#print Subgroup.comap_le_comap_of_le_range /-
+/- warning: subgroup.comap_le_comap_of_le_range -> Subgroup.comap_le_comap_of_le_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_le_range Subgroup.comap_le_comap_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_le_comap_of_le_range {f : G →* N} {K L : Subgroup N} (hf : K ≤ f.range) :
     K.comap f ≤ L.comap f ↔ K ≤ L :=
   ⟨(map_comap_eq_self hf).ge.trans ∘ map_le_iff_le_comap.mpr, comap_mono⟩
 #align subgroup.comap_le_comap_of_le_range Subgroup.comap_le_comap_of_le_range
 #align add_subgroup.comap_le_comap_of_le_range AddSubgroup.comap_le_comap_of_le_range
--/
 
-#print Subgroup.comap_le_comap_of_surjective /-
+/- warning: subgroup.comap_le_comap_of_surjective -> Subgroup.comap_le_comap_of_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_le_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
     K.comap f ≤ L.comap f ↔ K ≤ L :=
   comap_le_comap_of_le_range (le_top.trans (f.range_top_of_surjective hf).ge)
 #align subgroup.comap_le_comap_of_surjective Subgroup.comap_le_comap_of_surjective
 #align add_subgroup.comap_le_comap_of_surjective AddSubgroup.comap_le_comap_of_surjective
--/
 
-#print Subgroup.comap_lt_comap_of_surjective /-
+/- warning: subgroup.comap_lt_comap_of_surjective -> Subgroup.comap_lt_comap_of_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {K : Subgroup.{u2} N _inst_4} {L : Subgroup.{u2} N _inst_4}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Iff (LT.lt.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLT.{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)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f L)) (LT.lt.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLT.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K L))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {K : Subgroup.{u1} N _inst_4} {L : Subgroup.{u1} N _inst_4}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Iff (LT.lt.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLT.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f K) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f L)) (LT.lt.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLT.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) K L))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjectiveₓ'. -/
 @[to_additive]
 theorem comap_lt_comap_of_surjective {f : G →* N} {K L : Subgroup N} (hf : Function.Surjective f) :
     K.comap f < L.comap f ↔ K < L := by simp_rw [lt_iff_le_not_le, comap_le_comap_of_surjective hf]
 #align subgroup.comap_lt_comap_of_surjective Subgroup.comap_lt_comap_of_surjective
 #align add_subgroup.comap_lt_comap_of_surjective AddSubgroup.comap_lt_comap_of_surjective
--/
 
-#print Subgroup.comap_injective /-
+/- warning: subgroup.comap_injective -> Subgroup.comap_injective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} N _inst_4) (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Surjective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} N _inst_4) (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_injective Subgroup.comap_injectiveₓ'. -/
 @[to_additive]
 theorem comap_injective {f : G →* N} (h : Function.Surjective f) : Function.Injective (comap f) :=
   fun K L => by simp only [le_antisymm_iff, comap_le_comap_of_surjective h, imp_self]
 #align subgroup.comap_injective Subgroup.comap_injective
 #align add_subgroup.comap_injective AddSubgroup.comap_injective
--/
 
-#print Subgroup.comap_map_eq_self /-
+/- warning: subgroup.comap_map_eq_self -> Subgroup.comap_map_eq_self is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H) -> (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self Subgroup.comap_map_eq_selfₓ'. -/
 @[to_additive]
 theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) : comap f (map f H) = H :=
   by rwa [comap_map_eq, sup_eq_left]
 #align subgroup.comap_map_eq_self Subgroup.comap_map_eq_self
 #align add_subgroup.comap_map_eq_self AddSubgroup.comap_map_eq_self
--/
 
-#print Subgroup.comap_map_eq_self_of_injective /-
+/- warning: subgroup.comap_map_eq_self_of_injective -> Subgroup.comap_map_eq_self_of_injective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u1} (Subgroup.{u1} G _inst_1) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) H)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u2} (Subgroup.{u2} G _inst_1) (Subgroup.comap.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)) H)
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injectiveₓ'. -/
 @[to_additive]
 theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
     comap f (map f H) = H :=
   comap_map_eq_self (((ker_eq_bot_iff _).mpr h).symm ▸ bot_le)
 #align subgroup.comap_map_eq_self_of_injective Subgroup.comap_map_eq_self_of_injective
 #align add_subgroup.comap_map_eq_self_of_injective AddSubgroup.comap_map_eq_self_of_injective
--/
 
-#print Subgroup.map_le_map_iff /-
+/- warning: subgroup.map_le_map_iff -> Subgroup.map_le_map_iff is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff Subgroup.map_le_map_iffₓ'. -/
 @[to_additive]
 theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f ↔ H ≤ K ⊔ f.ker := by
   rw [map_le_iff_le_comap, comap_map_eq]
 #align subgroup.map_le_map_iff Subgroup.map_le_map_iff
 #align add_subgroup.map_le_map_iff AddSubgroup.map_le_map_iff
--/
 
-#print Subgroup.map_le_map_iff' /-
+/- warning: subgroup.map_le_map_iff' -> Subgroup.map_le_map_iff' is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff' Subgroup.map_le_map_iff'ₓ'. -/
 @[to_additive]
 theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
     H.map f ≤ K.map f ↔ H ⊔ f.ker ≤ K ⊔ f.ker := by
   simp only [map_le_map_iff, sup_le_iff, le_sup_right, and_true_iff]
 #align subgroup.map_le_map_iff' Subgroup.map_le_map_iff'
 #align add_subgroup.map_le_map_iff' AddSubgroup.map_le_map_iff'
--/
 
-#print Subgroup.map_eq_map_iff /-
+/- warning: subgroup.map_eq_map_iff -> Subgroup.map_eq_map_iff is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) K (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (Eq.{succ u2} (Subgroup.{u2} G _inst_1) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)) (HasSup.sup.{u2} (Subgroup.{u2} G _inst_1) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} G _inst_1) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1)))) K (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f)))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_map_iff Subgroup.map_eq_map_iffₓ'. -/
 @[to_additive]
 theorem map_eq_map_iff {f : G →* N} {H K : Subgroup G} :
     H.map f = K.map f ↔ H ⊔ f.ker = K ⊔ f.ker := by simp only [le_antisymm_iff, map_le_map_iff']
 #align subgroup.map_eq_map_iff Subgroup.map_eq_map_iff
 #align add_subgroup.map_eq_map_iff AddSubgroup.map_eq_map_iff
--/
 
-#print Subgroup.map_eq_range_iff /-
+/- warning: subgroup.map_eq_range_iff -> Subgroup.map_eq_range_iff is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {H : Subgroup.{u1} G _inst_1}, Iff (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) (Codisjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderTop.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {H : Subgroup.{u2} G _inst_1}, Iff (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (MonoidHom.range.{u2, u1} G _inst_1 N _inst_4 f)) (Codisjoint.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) (BoundedOrder.toOrderTop.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (CompleteLattice.toBoundedOrder.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))) H (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_range_iff Subgroup.map_eq_range_iffₓ'. -/
 @[to_additive]
 theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} : H.map f = f.range ↔ Codisjoint H f.ker :=
   by rw [f.range_eq_map, map_eq_map_iff, codisjoint_iff, top_sup_eq]
 #align subgroup.map_eq_range_iff Subgroup.map_eq_range_iff
 #align add_subgroup.map_eq_range_iff AddSubgroup.map_eq_range_iff
--/
 
-#print Subgroup.map_le_map_iff_of_injective /-
+/- warning: subgroup.map_le_map_iff_of_injective -> Subgroup.map_le_map_iff_of_injective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, Iff (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) (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)))) H K))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, Iff (LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) H K))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injectiveₓ'. -/
 @[to_additive]
 theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
     H.map f ≤ K.map f ↔ H ≤ K := by rw [map_le_iff_le_comap, comap_map_eq_self_of_injective hf]
 #align subgroup.map_le_map_iff_of_injective Subgroup.map_le_map_iff_of_injective
 #align add_subgroup.map_le_map_iff_of_injective AddSubgroup.map_le_map_iff_of_injective
--/
 
-#print Subgroup.map_subtype_le_map_subtype /-
+/- warning: subgroup.map_subtype_le_map_subtype -> Subgroup.map_subtype_le_map_subtype is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {G' : Subgroup.{u1} G _inst_1} {H : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')} {K : 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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')}, Iff (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)))) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') H) (Subgroup.map.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') K)) (LE.le.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (Preorder.toLE.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (PartialOrder.toPreorder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (SetLike.partialOrder.{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)) G') (Subgroup.toGroup.{u1} G _inst_1 G')) (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)) G') (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)) G') (Subgroup.toGroup.{u1} G _inst_1 G'))))) H K)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {G' : Subgroup.{u1} G _inst_1} {H : 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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')} {K : 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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')}, Iff (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))))) (Subgroup.map.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') H) (Subgroup.map.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G') G _inst_1 (Subgroup.subtype.{u1} G _inst_1 G') K)) (LE.le.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (Preorder.toLE.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (PartialOrder.toPreorder.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (CompleteSemilatticeInf.toPartialOrder.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (CompleteLattice.toCompleteSemilatticeInf.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')) (Subgroup.instCompleteLatticeSubgroup.{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 G')) (Subgroup.toGroup.{u1} G _inst_1 G')))))) H K)
+Case conversion may be inaccurate. Consider using '#align subgroup.map_subtype_le_map_subtype Subgroup.map_subtype_le_map_subtypeₓ'. -/
 @[simp, to_additive]
 theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
     H.map G'.Subtype ≤ K.map G'.Subtype ↔ H ≤ K :=
   map_le_map_iff_of_injective Subtype.coe_injective
 #align subgroup.map_subtype_le_map_subtype Subgroup.map_subtype_le_map_subtype
 #align add_subgroup.map_subtype_le_map_subtype AddSubgroup.map_subtype_le_map_subtype
--/
 
-#print Subgroup.map_injective /-
+/- warning: subgroup.map_injective -> Subgroup.map_injective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.Injective.{succ u1, succ u2} (Subgroup.{u1} G _inst_1) (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.Injective.{succ u2, succ u1} (Subgroup.{u2} G _inst_1) (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_injective Subgroup.map_injectiveₓ'. -/
 @[to_additive]
 theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) :=
   Function.LeftInverse.injective <| comap_map_eq_self_of_injective h
 #align subgroup.map_injective Subgroup.map_injective
 #align add_subgroup.map_injective AddSubgroup.map_injective
--/
 
-#print Subgroup.map_eq_comap_of_inverse /-
+/- warning: subgroup.map_eq_comap_of_inverse -> Subgroup.map_eq_comap_of_inverse is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))} {g : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.LeftInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Function.RightInverse.{succ u1, succ u2} G N (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (forall (H : Subgroup.{u1} G _inst_1), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 g H))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))} {g : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.LeftInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Function.RightInverse.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) g) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (forall (H : Subgroup.{u2} G _inst_1), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 g H))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverseₓ'. -/
 @[to_additive]
 theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
     (hr : Function.RightInverse g f) (H : Subgroup G) : map f H = comap g H :=
   SetLike.ext' <| by rw [coe_map, coe_comap, Set.image_eq_preimage_of_inverse hl hr]
 #align subgroup.map_eq_comap_of_inverse Subgroup.map_eq_comap_of_inverse
 #align add_subgroup.map_eq_comap_of_inverse AddSubgroup.map_eq_comap_of_inverse
--/
 
-#print Subgroup.map_injective_of_ker_le /-
+/- warning: subgroup.map_injective_of_ker_le -> Subgroup.map_injective_of_ker_le is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H) -> (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)))) (MonoidHom.ker.{u1, u2} G _inst_1 N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) K) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f K)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K)
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) {H : Subgroup.{u2} G _inst_1} {K : Subgroup.{u2} G _inst_1}, (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H) -> (LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) (MonoidHom.ker.{u2, u1} G _inst_1 N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) K) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f K)) -> (Eq.{succ u2} (Subgroup.{u2} G _inst_1) H K)
+Case conversion may be inaccurate. Consider using '#align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_leₓ'. -/
 /-- Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`. -/
 @[to_additive "Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`."]
 theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
@@ -4862,9 +5167,13 @@ theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ke
   rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf
 #align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_le
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
--/
 
-#print Subgroup.closure_preimage_eq_top /-
+/- warning: subgroup.closure_preimage_eq_top -> Subgroup.closure_preimage_eq_top is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (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)) (Subgroup.closure.{u1} G _inst_1 s)) -> 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)) (Subgroup.closure.{u1} G _inst_1 s)) 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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.hasTop.{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)) (Subgroup.closure.{u1} G _inst_1 s)) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (s : Set.{u1} G), Eq.{succ 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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.closure.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)) (Set.preimage.{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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) => (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 (Subgroup.closure.{u1} G _inst_1 s))) => 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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s)))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (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 (Subgroup.closure.{u1} G _inst_1 s))) 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 (Subgroup.closure.{u1} G _inst_1 s))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) s)) (Top.top.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.instTopSubgroup.{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 (Subgroup.closure.{u1} G _inst_1 s))) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.closure.{u1} G _inst_1 s))))
+Case conversion may be inaccurate. Consider using '#align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_topₓ'. -/
 @[to_additive]
 theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹' s) = ⊤ :=
   by
@@ -4875,9 +5184,13 @@ theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).Subtype ⁻¹
   exact subset_closure
 #align subgroup.closure_preimage_eq_top Subgroup.closure_preimage_eq_top
 #align add_subgroup.closure_preimage_eq_top AddSubgroup.closure_preimage_eq_top
--/
 
-#print Subgroup.comap_sup_eq_of_le_range /-
+/- warning: subgroup.comap_sup_eq_of_le_range -> Subgroup.comap_sup_eq_of_le_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) {H : Subgroup.{u2} N _inst_4} {K : Subgroup.{u2} N _inst_4}, (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) H (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4))))) K (MonoidHom.range.{u1, u2} G _inst_1 N _inst_4 f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq_of_le_range Subgroup.comap_sup_eq_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range) :
     comap f H ⊔ comap f K = comap f (H ⊔ K) :=
@@ -4887,9 +5200,13 @@ theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K
         inf_eq_right.mpr hK, inf_eq_right.mpr (sup_le hH hK)])
 #align subgroup.comap_sup_eq_of_le_range Subgroup.comap_sup_eq_of_le_range
 #align add_subgroup.comap_sup_eq_of_le_range AddSubgroup.comap_sup_eq_of_le_range
--/
 
-#print Subgroup.comap_sup_eq /-
+/- warning: subgroup.comap_sup_eq -> Subgroup.comap_sup_eq is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.completeLattice.{u2} N _inst_4)))) H K)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (H : Subgroup.{u2} N _inst_4) (K : Subgroup.{u2} N _inst_4), (Function.Surjective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} G _inst_1) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f H) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f K)) (Subgroup.comap.{u1, u2} G _inst_1 N _inst_4 f (HasSup.sup.{u2} (Subgroup.{u2} N _inst_4) (SemilatticeSup.toHasSup.{u2} (Subgroup.{u2} N _inst_4) (Lattice.toSemilatticeSup.{u2} (Subgroup.{u2} N _inst_4) (CompleteLattice.toLattice.{u2} (Subgroup.{u2} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u2} N _inst_4)))) H K)))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_sup_eq Subgroup.comap_sup_eqₓ'. -/
 @[to_additive]
 theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
     comap f H ⊔ comap f K = comap f (H ⊔ K) :=
@@ -4897,18 +5214,26 @@ theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
     (le_top.trans (ge_of_eq (f.range_top_of_surjective hf)))
 #align subgroup.comap_sup_eq Subgroup.comap_sup_eq
 #align add_subgroup.comap_sup_eq AddSubgroup.comap_sup_eq
--/
 
-#print Subgroup.sup_subgroupOf_eq /-
+/- warning: subgroup.sup_subgroup_of_eq -> Subgroup.sup_subgroupOf_eq is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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)))) H L) -> (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)))) K L) -> (Eq.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (HasSup.sup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.completeLattice.{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)) L) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K) L))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} {L : Subgroup.{u1} G _inst_1}, (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))))) H L) -> (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))))) K L) -> (Eq.{succ 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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (HasSup.sup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (SemilatticeSup.toHasSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Lattice.toSemilatticeSup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (CompleteLattice.toLattice.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L)) (Subgroup.instCompleteLatticeSubgroup.{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 L)) (Subgroup.toGroup.{u1} G _inst_1 L))))) (Subgroup.subgroupOf.{u1} G _inst_1 H L) (Subgroup.subgroupOf.{u1} G _inst_1 K L)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K) L))
+Case conversion may be inaccurate. Consider using '#align subgroup.sup_subgroup_of_eq Subgroup.sup_subgroupOf_eqₓ'. -/
 @[to_additive]
 theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
     H.subgroupOf L ⊔ K.subgroupOf L = (H ⊔ K).subgroupOf L :=
   comap_sup_eq_of_le_range L.Subtype (hH.trans L.subtype_range.ge) (hK.trans L.subtype_range.ge)
 #align subgroup.sup_subgroup_of_eq Subgroup.sup_subgroupOf_eq
 #align add_subgroup.sup_add_subgroup_of_eq AddSubgroup.sup_addSubgroupOf_eq
--/
 
-#print Subgroup.codisjoint_subgroupOf_sup /-
+/- warning: subgroup.codisjoint_subgroup_of_sup -> Subgroup.codisjoint_subgroupOf_sup is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))) (BoundedOrder.toOrderTop.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (SetLike.partialOrder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)))))) (CompleteLattice.toBoundedOrder.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))) (Subgroup.completeLattice.{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)) (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) H K))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1), Codisjoint.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (BoundedOrder.toOrderTop.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Preorder.toLE.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (PartialOrder.toPreorder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteSemilatticeInf.toPartialOrder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (CompleteLattice.toCompleteSemilatticeInf.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))))) (CompleteLattice.toBoundedOrder.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.instCompleteLatticeSubgroup.{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 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))) (Subgroup.toGroup.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))))) (Subgroup.subgroupOf.{u1} G _inst_1 H (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K)) (Subgroup.subgroupOf.{u1} G _inst_1 K (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) H K))
+Case conversion may be inaccurate. Consider using '#align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_supₓ'. -/
 @[to_additive]
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
     Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) :=
@@ -4917,9 +5242,13 @@ theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
   exacts[le_sup_left, le_sup_right]
 #align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_sup
 #align add_subgroup.codisjoint_add_subgroup_of_sup AddSubgroup.codisjoint_addSubgroupOf_sup
--/
 
-#print Subgroup.equivMapOfInjective /-
+/- warning: subgroup.equiv_map_of_injective -> Subgroup.equivMapOfInjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))), (Function.Injective.{succ u1, succ u2} G N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (MonoidHom.monoidHomClass.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))))) f)) -> (MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjectiveₓ'. -/
 /-- A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
 use `mul_equiv.subgroup_map` for better definitional equalities. -/
 @[to_additive
@@ -4929,18 +5258,26 @@ noncomputable def equivMapOfInjective (H : Subgroup G) (f : G →* N) (hf : Func
   { Equiv.Set.image f H hf with map_mul' := fun _ _ => Subtype.ext (f.map_mul _ _) }
 #align subgroup.equiv_map_of_injective Subgroup.equivMapOfInjective
 #align add_subgroup.equiv_map_of_injective AddSubgroup.equivMapOfInjective
--/
 
-#print Subgroup.coe_equivMapOfInjective_apply /-
+/- warning: subgroup.coe_equiv_map_of_injective_apply -> Subgroup.coe_equivMapOfInjective_apply is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (hf : Function.Injective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) (h : 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)) H), Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) N (coeSubtype.{succ u2} N (fun (x : N) => Membership.Mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) x (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 N _inst_4 H f hf) h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) h))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (hf : Function.Injective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) (h : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} N (Subtype.val.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Set.{u1} N) (Set.instMembershipSet.{u1} N) x (SetLike.coe.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Subgroup.toSubmonoid.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} N (fun (x : N) => Membership.mem.{u1, u1} N (Subgroup.{u1} N _inst_4) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u1} N _inst_4)) x (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 N _inst_4 H f hf) h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) h))
+Case conversion may be inaccurate. Consider using '#align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
     (h : H) : (equivMapOfInjective H f hf h : N) = f h :=
   rfl
 #align subgroup.coe_equiv_map_of_injective_apply Subgroup.coe_equivMapOfInjective_apply
 #align add_subgroup.coe_equiv_map_of_injective_apply AddSubgroup.coe_equivMapOfInjective_apply
--/
 
-#print Subgroup.comap_normalizer_eq_of_surjective /-
+/- warning: subgroup.comap_normalizer_eq_of_surjective -> Subgroup.comap_normalizer_eq_of_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Surjective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.comap.{u2, u1} N _inst_4 G _inst_1 f H)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))}, (Function.Surjective.{succ u1, succ u2} N G (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MonoidHom.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u2} N G (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.comap.{u1, u2} N _inst_4 G _inst_1 f H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjectiveₓ'. -/
 /-- The preimage of the normalizer is equal to the normalizer of the preimage of a surjective
   function. -/
 @[to_additive
@@ -4956,9 +5293,13 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
       simp [hx y])
 #align subgroup.comap_normalizer_eq_of_surjective Subgroup.comap_normalizer_eq_of_surjective
 #align add_subgroup.comap_normalizer_eq_of_surjective AddSubgroup.comap_normalizer_eq_of_surjective
--/
 
-#print Subgroup.comap_normalizer_eq_of_injective_of_le_range /-
+/- warning: subgroup.comap_normalizer_eq_of_injective_of_le_range -> Subgroup.comap_normalizer_eq_of_injective_of_le_range is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => N -> G) (MonoidHom.hasCoeToFun.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) f)) -> (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_5 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))}, (Function.Injective.{succ u2, succ u1} N G (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => G) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u2, u1} N G (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_5))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) f)) -> (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) (MonoidHom.range.{u2, u1} N _inst_5 G _inst_1 f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_5) (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_5 (Subgroup.comap.{u2, u1} N _inst_5 G _inst_1 f H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_rangeₓ'. -/
 @[to_additive]
 theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H : Subgroup G)
     {f : N →* G} (hf : Function.Injective f) (h : H.normalizer ≤ f.range) :
@@ -4973,9 +5314,13 @@ theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H :
     rw [map_comap_eq_self (le_trans le_normalizer h)]
 #align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_range
 #align add_subgroup.comap_normalizer_eq_of_injective_of_le_range AddSubgroup.comap_normalizer_eq_of_injective_of_le_range
--/
 
-#print Subgroup.subgroupOf_normalizer_eq /-
+/- warning: subgroup.subgroup_of_normalizer_eq -> Subgroup.subgroupOf_normalizer_eq is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1}, (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)))) (Subgroup.normalizer.{u1} G _inst_1 H) N) -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.subgroupOf.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H) N) (Subgroup.normalizer.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Subgroup.subgroupOf.{u1} G _inst_1 H N)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1}, (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))))) (Subgroup.normalizer.{u1} G _inst_1 H) N) -> (Eq.{succ 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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.subgroupOf.{u1} G _inst_1 (Subgroup.normalizer.{u1} G _inst_1 H) N) (Subgroup.normalizer.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N) (Subgroup.subgroupOf.{u1} G _inst_1 H N)))
+Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_normalizer_eq Subgroup.subgroupOf_normalizer_eqₓ'. -/
 @[to_additive]
 theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
     H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer :=
@@ -4985,9 +5330,13 @@ theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
   simpa
 #align subgroup.subgroup_of_normalizer_eq Subgroup.subgroupOf_normalizer_eq
 #align add_subgroup.add_subgroup_of_normalizer_eq AddSubgroup.addSubgroupOf_normalizer_eq
--/
 
-#print Subgroup.map_equiv_normalizer_eq /-
+/- warning: subgroup.map_equiv_normalizer_eq -> Subgroup.map_equiv_normalizer_eq is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (f : MulEquiv.{u1, u2} G N (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))))), Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4))) f) H))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) (f : MulEquiv.{u2, u1} G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))))), Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 (MulEquiv.toMonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) f) H))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_equiv_normalizer_eq Subgroup.map_equiv_normalizer_eqₓ'. -/
 /-- The image of the normalizer is equal to the normalizer of the image of an isomorphism. -/
 @[to_additive
       "The image of the normalizer is equal to the normalizer of the image of an\nisomorphism."]
@@ -5000,9 +5349,13 @@ theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
   simp
 #align subgroup.map_equiv_normalizer_eq Subgroup.map_equiv_normalizer_eq
 #align add_subgroup.map_equiv_normalizer_eq AddSubgroup.map_equiv_normalizer_eq
--/
 
-#print Subgroup.map_normalizer_eq_of_bijective /-
+/- warning: subgroup.map_normalizer_eq_of_bijective -> Subgroup.map_normalizer_eq_of_bijective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) {f : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))}, (Function.Bijective.{succ u1, succ u2} G N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) (fun (_x : MonoidHom.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) => G -> N) (MonoidHom.hasCoeToFun.{u1, u2} G N (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} N (DivInvMonoid.toMonoid.{u2} N (Group.toDivInvMonoid.{u2} N _inst_4)))) f)) -> (Eq.{succ u2} (Subgroup.{u2} N _inst_4) (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u1} G _inst_1 H)) (Subgroup.normalizer.{u2} N _inst_4 (Subgroup.map.{u1, u2} G _inst_1 N _inst_4 f H)))
+but is expected to have type
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N] (H : Subgroup.{u2} G _inst_1) {f : MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))}, (Function.Bijective.{succ u2, succ u1} G N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))) G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4))) (MonoidHom.monoidHomClass.{u2, u1} G N (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} N (DivInvMonoid.toMonoid.{u1} N (Group.toDivInvMonoid.{u1} N _inst_4)))))) f)) -> (Eq.{succ u1} (Subgroup.{u1} N _inst_4) (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f (Subgroup.normalizer.{u2} G _inst_1 H)) (Subgroup.normalizer.{u1} N _inst_4 (Subgroup.map.{u2, u1} G _inst_1 N _inst_4 f H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.map_normalizer_eq_of_bijective Subgroup.map_normalizer_eq_of_bijectiveₓ'. -/
 /-- The image of the normalizer is equal to the normalizer of the image of a bijective
   function. -/
 @[to_additive
@@ -5012,7 +5365,6 @@ theorem map_normalizer_eq_of_bijective (H : Subgroup G) {f : G →* N} (hf : Fun
   map_equiv_normalizer_eq H (MulEquiv.ofBijective f hf)
 #align subgroup.map_normalizer_eq_of_bijective Subgroup.map_normalizer_eq_of_bijective
 #align add_subgroup.map_normalizer_eq_of_bijective AddSubgroup.map_normalizer_eq_of_bijective
--/
 
 end Subgroup
 
@@ -5022,7 +5374,12 @@ variable {G₁ G₂ G₃ : Type _} [Group G₁] [Group G₂] [Group G₃]
 
 variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 
-#print MonoidHom.liftOfRightInverseAux /-
+/- warning: monoid_hom.lift_of_right_inverse_aux -> MonoidHom.liftOfRightInverseAux is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+but is expected to have type
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (forall (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAuxₓ'. -/
 /-- Auxiliary definition used to define `lift_of_right_inverse` -/
 @[to_additive "Auxiliary definition used to define `lift_of_right_inverse`"]
 def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃) (hg : f.ker ≤ g.ker) :
@@ -5037,9 +5394,13 @@ def liftOfRightInverseAux (hf : Function.RightInverse f_inv f) (g : G₁ →* G
     simp only [hf _]
 #align monoid_hom.lift_of_right_inverse_aux MonoidHom.liftOfRightInverseAux
 #align add_monoid_hom.lift_of_right_inverse_aux AddMonoidHom.liftOfRightInverseAux
--/
 
-#print MonoidHom.liftOfRightInverseAux_comp_apply /-
+/- warning: monoid_hom.lift_of_right_inverse_aux_comp_apply -> MonoidHom.liftOfRightInverseAux_comp_apply is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.liftOfRightInverseAux.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) g x)
+but is expected to have type
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (MonoidHom.liftOfRightInverseAux.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf g hg) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₃) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) g x)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
     (hg : f.ker ≤ g.ker) (x : G₁) : (f.liftOfRightInverseAux f_inv hf g hg) (f x) = g x :=
@@ -5051,9 +5412,13 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
   simp only [hf _]
 #align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_apply
 #align add_monoid_hom.lift_of_right_inverse_aux_comp_apply AddMonoidHom.liftOfRightInverseAux_comp_apply
--/
 
-#print MonoidHom.liftOfRightInverse /-
+/- warning: monoid_hom.lift_of_right_inverse -> MonoidHom.liftOfRightInverse is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+but is expected to have type
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁), (Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverseₓ'. -/
 /-- `lift_of_right_inverse f hf g hg` is the unique group homomorphism `φ`
 
 * such that `φ.comp f = g` (`monoid_hom.lift_of_right_inverse_comp`),
@@ -5087,9 +5452,13 @@ def liftOfRightInverse (hf : Function.RightInverse f_inv f) :
     simp [lift_of_right_inverse_aux, hf b]
 #align monoid_hom.lift_of_right_inverse MonoidHom.liftOfRightInverse
 #align add_monoid_hom.lift_of_right_inverse AddMonoidHom.liftOfRightInverse
--/
 
-#print MonoidHom.liftOfSurjective /-
+/- warning: monoid_hom.lift_of_surjective -> MonoidHom.liftOfSurjective is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) -> (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+but is expected to have type
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))), (Function.Surjective.{succ u1, succ u2} G₁ G₂ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u1} G₁ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) -> (Equiv.{max 1 (succ u1) (succ u3), max (succ u3) (succ u2)} (Subtype.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} G₁ _inst_4))))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjectiveₓ'. -/
 /-- A non-computable version of `monoid_hom.lift_of_right_inverse` for when no computable right
 inverse is available, that uses `function.surj_inv`. -/
 @[simp,
@@ -5100,9 +5469,13 @@ noncomputable abbrev liftOfSurjective (hf : Function.Surjective f) :
   f.liftOfRightInverse (Function.surjInv hf) (Function.rightInverse_surjInv hf)
 #align monoid_hom.lift_of_surjective MonoidHom.liftOfSurjective
 #align add_monoid_hom.lift_of_surjective AddMonoidHom.liftOfSurjective
--/
 
-#print MonoidHom.liftOfRightInverse_comp_apply /-
+/- warning: monoid_hom.lift_of_right_inverse_comp_apply -> MonoidHom.liftOfRightInverse_comp_apply is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u3} G₃ (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₂ -> G₃) (MonoidHom.hasCoeToFun.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f x)) (coeFn.{max 1 (succ u3) (succ u1), max (succ u1) (succ u3)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (fun (x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) => G₁ -> G₃) (coeFnTrans.{max (succ u1) (succ u3), max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (_x : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => G₁ -> G₃) (MonoidHom.hasCoeToFun.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBaseAux.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))))) g x)
+but is expected to have type
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (x : G₁), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (a : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ (fun (_x : G₂) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₂) => G₃) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) g) G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ (fun (x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₃) x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u1} G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (MonoidHom.monoidHomClass.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))))) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g) x)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_applyₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
     (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) (x : G₁) :
@@ -5110,18 +5483,26 @@ theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
   f.liftOfRightInverseAux_comp_apply f_inv hf g.1 g.2 x
 #align monoid_hom.lift_of_right_inverse_comp_apply MonoidHom.liftOfRightInverse_comp_apply
 #align add_monoid_hom.lift_of_right_inverse_comp_apply AddMonoidHom.liftOfRightInverse_comp_apply
--/
 
-#print MonoidHom.liftOfRightInverse_comp /-
+/- warning: monoid_hom.lift_of_right_inverse_comp -> MonoidHom.liftOfRightInverse_comp is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) ((fun (a : Sort.{max 1 (succ u3) (succ u1)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} a b] => self.0) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (HasLiftT.mk.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (CoeTCₓ.coe.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeBase.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (coeSubtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)))))) g)
+but is expected to have type
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) g) f) (Subtype.val.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g)
+Case conversion may be inaccurate. Consider using '#align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_compₓ'. -/
 @[simp, to_additive]
 theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
     (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) : (f.liftOfRightInverse f_inv hf g).comp f = g :=
   MonoidHom.ext <| f.liftOfRightInverse_comp_apply f_inv hf g
 #align monoid_hom.lift_of_right_inverse_comp MonoidHom.liftOfRightInverse_comp
 #align add_monoid_hom.lift_of_right_inverse_comp AddMonoidHom.liftOfRightInverse_comp
--/
 
-#print MonoidHom.eq_liftOfRightInverse /-
+/- warning: monoid_hom.eq_lift_of_right_inverse -> MonoidHom.eq_liftOfRightInverse is a dubious translation:
+lean 3 declaration is
+  forall {G₁ : Type.{u1}} {G₂ : Type.{u2}} {G₃ : Type.{u3}} [_inst_4 : Group.{u1} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u3} G₃] (f : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u1, succ u2} G₁ G₂ f_inv (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (fun (_x : MonoidHom.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) => G₁ -> G₂) (MonoidHom.hasCoeToFun.{u1, u2} G₁ G₂ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) f)) (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (hg : LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (MonoidHom.comp.{u1, u2, u3} G₁ G₂ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) h (coeFn.{max 1 (max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)) (max (succ u3) (succ u2)) 1 (succ u3) (succ u1), max (max 1 (succ u3) (succ u1)) (succ u3) (succ u2)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (fun (_x : Equiv.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) => (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) -> (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (Equiv.hasCoeToFun.{max 1 (succ u3) (succ u1), max (succ u3) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g))) (MonoidHom.{u2, u3} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u1, u2, u3} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) (fun (g : MonoidHom.{u1, u3} G₁ G₃ (Monoid.toMulOneClass.{u1} G₁ (DivInvMonoid.toMonoid.{u1} G₁ (Group.toDivInvMonoid.{u1} G₁ _inst_4))) (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6)))) => LE.le.{u1} (Subgroup.{u1} G₁ _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} G₁ _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G₁ _inst_4) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G₁ _inst_4) G₁ (Subgroup.setLike.{u1} G₁ _inst_4)))) (MonoidHom.ker.{u1, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u1, u3} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u3} G₃ (DivInvMonoid.toMonoid.{u3} G₃ (Group.toDivInvMonoid.{u3} G₃ _inst_6))) g)) g hg)))
+but is expected to have type
+  forall {G₁ : Type.{u3}} {G₂ : Type.{u2}} {G₃ : Type.{u1}} [_inst_4 : Group.{u3} G₁] [_inst_5 : Group.{u2} G₂] [_inst_6 : Group.{u1} G₃] (f : MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (f_inv : G₂ -> G₁) (hf : Function.RightInverse.{succ u3, succ u2} G₁ G₂ f_inv (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ (fun (_x : G₁) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G₁) => G₂) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (MulOneClass.toMul.{u3} G₁ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4)))) (MulOneClass.toMul.{u2} G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))) G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (MonoidHom.monoidHomClass.{u3, u2} G₁ G₂ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5)))))) f)) (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (hg : LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) (h : MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))), (Eq.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (MonoidHom.comp.{u3, u2, u1} G₁ G₂ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) h f) g) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) h (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), max (succ u3) (succ u1), max (succ u2) (succ u1)} (Equiv.{max 1 (succ u3) (succ u1), max (succ u1) (succ u2)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (fun (_x : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) => MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u2) (succ u1)} (Subtype.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g))) (MonoidHom.{u2, u1} G₂ G₃ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))))) (MonoidHom.liftOfRightInverse.{u3, u2, u1} G₁ G₂ G₃ _inst_4 _inst_5 _inst_6 f f_inv hf) (Subtype.mk.{max (succ u3) (succ u1)} (MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) (fun (g : MonoidHom.{u3, u1} G₁ G₃ (Monoid.toMulOneClass.{u3} G₁ (DivInvMonoid.toMonoid.{u3} G₁ (Group.toDivInvMonoid.{u3} G₁ _inst_4))) (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6)))) => LE.le.{u3} (Subgroup.{u3} G₁ _inst_4) (Preorder.toLE.{u3} (Subgroup.{u3} G₁ _inst_4) (PartialOrder.toPreorder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u3} (Subgroup.{u3} G₁ _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u3} (Subgroup.{u3} G₁ _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u3} G₁ _inst_4))))) (MonoidHom.ker.{u3, u2} G₁ _inst_4 G₂ (Monoid.toMulOneClass.{u2} G₂ (DivInvMonoid.toMonoid.{u2} G₂ (Group.toDivInvMonoid.{u2} G₂ _inst_5))) f) (MonoidHom.ker.{u3, u1} G₁ _inst_4 G₃ (Monoid.toMulOneClass.{u1} G₃ (DivInvMonoid.toMonoid.{u1} G₃ (Group.toDivInvMonoid.{u1} G₃ _inst_6))) g)) g hg)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverseₓ'. -/
 @[to_additive]
 theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
     (hg : f.ker ≤ g.ker) (h : G₂ →* G₃) (hh : h.comp f = g) :
@@ -5131,7 +5512,6 @@ theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →
   exact ((f.lift_of_right_inverse f_inv hf).apply_symm_apply _).symm
 #align monoid_hom.eq_lift_of_right_inverse MonoidHom.eq_liftOfRightInverse
 #align add_monoid_hom.eq_lift_of_right_inverse AddMonoidHom.eq_liftOfRightInverse
--/
 
 end MonoidHom
 
@@ -5155,7 +5535,12 @@ instance (priority := 100) Subgroup.normal_comap {H : Subgroup N} [nH : H.Normal
 #align add_subgroup.normal_comap AddSubgroup.normal_comap
 -/
 
-#print Subgroup.Normal.subgroupOf /-
+/- warning: subgroup.normal.subgroup_of -> Subgroup.Normal.subgroupOf is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (K : Subgroup.{u1} G _inst_1), Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1}, (Subgroup.Normal.{u1} G _inst_1 H) -> (forall (K : Subgroup.{u1} G _inst_1), Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K))
+Case conversion may be inaccurate. Consider using '#align subgroup.normal.subgroup_of Subgroup.Normal.subgroupOfₓ'. -/
 -- Here `H.normal` is an explicit argument so we can use dot notation with `subgroup_of`.
 @[to_additive]
 theorem Subgroup.Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgroup G) :
@@ -5163,45 +5548,60 @@ theorem Subgroup.Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgrou
   hH.comap _
 #align subgroup.normal.subgroup_of Subgroup.Normal.subgroupOf
 #align add_subgroup.normal.add_subgroup_of AddSubgroup.Normal.addSubgroupOf
--/
 
-#print Subgroup.normal_subgroupOf /-
+/- warning: subgroup.normal_subgroup_of -> Subgroup.normal_subgroupOf is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [_inst_5 : Subgroup.Normal.{u1} G _inst_1 N], Subgroup.Normal.{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)) H) (Subgroup.toGroup.{u1} G _inst_1 H) (Subgroup.subgroupOf.{u1} G _inst_1 N H)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {N : Subgroup.{u1} G _inst_1} [_inst_5 : Subgroup.Normal.{u1} G _inst_1 N], Subgroup.Normal.{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 H)) (Subgroup.toGroup.{u1} G _inst_1 H) (Subgroup.subgroupOf.{u1} G _inst_1 N H)
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_subgroup_of Subgroup.normal_subgroupOfₓ'. -/
 @[to_additive]
 instance (priority := 100) Subgroup.normal_subgroupOf {H N : Subgroup G} [N.Normal] :
     (N.subgroupOf H).Normal :=
   Subgroup.normal_comap _
 #align subgroup.normal_subgroup_of Subgroup.normal_subgroupOf
 #align add_subgroup.normal_add_subgroup_of AddSubgroup.normal_addSubgroupOf
--/
 
 namespace MonoidHom
 
-#print MonoidHom.subgroupComap /-
+/- warning: monoid_hom.subgroup_comap -> MonoidHom.subgroupComap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H' : Subgroup.{u2} G' _inst_2), MonoidHom.{u1, u2} (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (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)) (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H')) (Subgroup.toGroup.{u1} G _inst_1 (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H'))))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) H') (Subgroup.toGroup.{u2} G' _inst_2 H'))))
+but is expected to have type
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H' : Subgroup.{u2} G' _inst_2), MonoidHom.{u1, u2} (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 (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H'))) (Subtype.{succ u2} G' (fun (x : G') => Membership.mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u2} G' _inst_2)) x H')) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (Subgroup.comap.{u1, u2} G _inst_1 G' _inst_2 f H'))) (Submonoid.toMulOneClass.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Subgroup.toSubmonoid.{u2} G' _inst_2 H'))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_comap MonoidHom.subgroupComapₓ'. -/
 /-- The `monoid_hom` from the preimage of a subgroup to itself. -/
 @[to_additive "the `add_monoid_hom` from the preimage of an additive subgroup to itself.", simps]
 def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
   f.submonoidComap H'.toSubmonoid
 #align monoid_hom.subgroup_comap MonoidHom.subgroupComap
 #align add_monoid_hom.add_subgroup_comap AddMonoidHom.addSubgroupComap
--/
 
-#print MonoidHom.subgroupMap /-
+/- warning: monoid_hom.subgroup_map -> MonoidHom.subgroupMap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))
+but is expected to have type
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), MonoidHom.{u1, u2} (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 H)) (Subtype.{succ u2} G' (fun (x : G') => Membership.mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 H)) (Submonoid.toMulOneClass.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (Subgroup.toSubmonoid.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map MonoidHom.subgroupMapₓ'. -/
 /-- The `monoid_hom` from a subgroup to its image. -/
 @[to_additive "the `add_monoid_hom` from an additive subgroup to its image", simps]
 def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
   f.submonoidMap H.toSubmonoid
 #align monoid_hom.subgroup_map MonoidHom.subgroupMap
 #align add_monoid_hom.add_subgroup_map AddMonoidHom.addSubgroupMap
--/
 
-#print MonoidHom.subgroupMap_surjective /-
+/- warning: monoid_hom.subgroup_map_surjective -> MonoidHom.subgroupMap_surjective is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (f : MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (H : Subgroup.{u1} G _inst_1), Function.Surjective.{succ u1, succ u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (fun (_x : MonoidHom.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H))) (MonoidHom.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (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)) H) (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)) H) (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)) H) (Subgroup.toGroup.{u1} G _inst_1 H)))) (Monoid.toMulOneClass.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (DivInvMonoid.toMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Group.toDivInvMonoid.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)) (Subgroup.toGroup.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 f H))
+but is expected to have type
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (f : MonoidHom.{u2, u1} G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (H : Subgroup.{u2} G _inst_1), Function.Surjective.{succ u2, succ u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 f H)))))) (MonoidHom.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 f H))
+Case conversion may be inaccurate. Consider using '#align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjectiveₓ'. -/
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
     Function.Surjective (f.subgroupMap H) :=
   f.submonoidMap_surjective H.toSubmonoid
 #align monoid_hom.subgroup_map_surjective MonoidHom.subgroupMap_surjective
 #align add_monoid_hom.add_subgroup_map_surjective AddMonoidHom.addSubgroupMap_surjective
--/
 
 end MonoidHom
 
@@ -5209,7 +5609,12 @@ namespace MulEquiv
 
 variable {H K : Subgroup G}
 
-#print MulEquiv.subgroupCongr /-
+/- warning: mul_equiv.subgroup_congr -> MulEquiv.subgroupCongr is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K) -> (MulEquiv.{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)) H) (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)) K) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u1} G _inst_1 K))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (Eq.{succ u1} (Subgroup.{u1} G _inst_1) H K) -> (MulEquiv.{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 H)) (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 K)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u1} G _inst_1 K))
+Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_congr MulEquiv.subgroupCongrₓ'. -/
 /-- Makes the identity isomorphism from a proof two subgroups of a multiplicative
     group are equal. -/
 @[to_additive
@@ -5218,9 +5623,13 @@ def subgroupCongr (h : H = K) : H ≃* K :=
   { Equiv.setCongr <| congr_arg _ h with map_mul' := fun _ _ => rfl }
 #align mul_equiv.subgroup_congr MulEquiv.subgroupCongr
 #align add_equiv.add_subgroup_congr AddEquiv.addSubgroupCongr
--/
 
-#print MulEquiv.subgroupMap /-
+/- warning: mul_equiv.subgroup_map -> MulEquiv.subgroupMap is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1), MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))
+but is expected to have type
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1), MulEquiv.{u1, u2} (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 H)) (Subtype.{succ u2} G' (fun (x : G') => Membership.mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))))) e) H))) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G G' (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))))) e) H))
+Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map MulEquiv.subgroupMapₓ'. -/
 /-- A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
 use `subgroup.equiv_map_of_injective`. -/
 @[to_additive
@@ -5229,31 +5638,43 @@ def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G')
   MulEquiv.submonoidMap (e : G ≃* G') H.toSubmonoid
 #align mul_equiv.subgroup_map MulEquiv.subgroupMap
 #align add_equiv.add_subgroup_map AddEquiv.addSubgroupMap
--/
 
-#print MulEquiv.coe_subgroupMap_apply /-
+/- warning: mul_equiv.coe_subgroup_map_apply -> MulEquiv.coe_subgroupMap_apply is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : 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)) H), Eq.{succ u2} G' ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (fun (_x : MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) => (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)) H) -> (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.hasCoeToFun.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H) g)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) => G -> G') (MulEquiv.hasCoeToFun.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) e ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H) G (HasLiftT.mk.{succ u1, succ 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)) H) G (CoeTCₓ.coe.{succ u1, succ 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)) H) G (coeBase.{succ u1, succ 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)) H) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H))))) g))
+but is expected to have type
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)), Eq.{succ u1} G' (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (fun (_x : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) => Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))))) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H) g)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => G') _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))))) e (Subtype.val.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) x (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) g))
+Case conversion may be inaccurate. Consider using '#align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_applyₓ'. -/
 @[simp, to_additive]
 theorem coe_subgroupMap_apply (e : G ≃* G') (H : Subgroup G) (g : H) :
     ((subgroupMap e H g : H.map (e : G →* G')) : G') = e g :=
   rfl
 #align mul_equiv.coe_subgroup_map_apply MulEquiv.coe_subgroupMap_apply
 #align add_equiv.coe_add_subgroup_map_apply AddEquiv.coe_addSubgroupMap_apply
--/
 
-#print MulEquiv.subgroupMap_symm_apply /-
+/- warning: mul_equiv.subgroup_map_symm_apply -> MulEquiv.subgroupMap_symm_apply is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (H : Subgroup.{u1} G _inst_1) (g : coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)), Eq.{succ 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)) H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (fun (_x : MulEquiv.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) => (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) -> (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)) H)) (MulEquiv.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (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)) H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H)) (MulEquiv.symm.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Iff.mp (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) H) (SetLike.mem_coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1) H (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (fun (_x : MulEquiv.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) => G' -> G) (MulEquiv.hasCoeToFun.{u2, u1} G' G (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.symm.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g))) (Iff.mp (Membership.Mem.{u2, u2} G' (Set.{u2} G') (Set.hasMem.{u2} G') ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g) (Set.image.{u1, u2} G G' (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} G G') (fun (_x : Equiv.{succ u1, succ u2} G G') => G -> G') (Equiv.hasCoeToFun.{succ u1, succ u2} G G') (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H))) (Membership.Mem.{u1, u1} G (Set.{u1} G) (Set.hasMem.{u1} G) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} G' G) (fun (_x : Equiv.{succ u2, succ u1} G' G) => G' -> G) (Equiv.hasCoeToFun.{succ u2, succ u1} G' G) (Equiv.symm.{succ u1, succ u2} G G' (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H)) (Set.mem_image_equiv.{u1, u2} G G' ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) H) (MulEquiv.toEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) e) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) G' (coeSubtype.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)))))) g)) (Subtype.property.{succ u2} G' (fun (x : G') => Membership.Mem.{u2, u2} G' (Subgroup.{u2} G' _inst_2) (SetLike.hasMem.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) x (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) g))))
+but is expected to have type
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (H : Subgroup.{u2} G _inst_1) (g : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) g) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (fun (_x : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) => Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (MulOneClass.toMul.{u1} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)))) (MulOneClass.toMul.{u2} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Submonoid.toMulOneClass.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Subgroup.toSubmonoid.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Submonoid.toMulOneClass.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Subgroup.toSubmonoid.{u2} G _inst_1 H)) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (Subgroup.mul.{u2} G _inst_1 H))))) (MulEquiv.symm.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)) g) (Subtype.mk.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Iff.mp (Membership.mem.{u2, u2} G (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) H) (SetLike.mem_coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' (fun (_x : G') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G') => G) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))))) G' G (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G' G (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))))))) (MulEquiv.symm.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g))) (Iff.mp (Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g) (Set.image.{u2, u1} G G' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} G G') G (fun (_x : G) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G) => G') _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} G G') (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H))) (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Set.{u2} G) (Set.instMembershipSet.{u2} G) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} G' G) G' (fun (_x : G') => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : G') => G) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} G' G) (Equiv.symm.{succ u2, succ u1} G G' (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e)) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H)) (Set.mem_image_equiv.{u1, u2} G G' (SetLike.coe.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1) H) (MulEquiv.toEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) e) (Subtype.val.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Set.{u1} G') (Set.instMembershipSet.{u1} G') x (SetLike.coe.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2) (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) g)) (Subtype.property.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H)) g))))
+Case conversion may be inaccurate. Consider using '#align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem subgroupMap_symm_apply (e : G ≃* G') (H : Subgroup G) (g : H.map (e : G →* G')) :
     (e.subgroupMap H).symm g = ⟨e.symm g, SetLike.mem_coe.1 <| Set.mem_image_equiv.1 g.2⟩ :=
   rfl
 #align mul_equiv.subgroup_map_symm_apply MulEquiv.subgroupMap_symm_apply
 #align add_equiv.add_subgroup_map_symm_apply AddEquiv.addSubgroupMap_symm_apply
--/
 
 end MulEquiv
 
 namespace Subgroup
 
-#print Subgroup.equivMapOfInjective_coe_mulEquiv /-
+/- warning: subgroup.equiv_map_of_injective_coe_mul_equiv -> Subgroup.equivMapOfInjective_coe_mulEquiv is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} {G' : Type.{u2}} [_inst_1 : Group.{u1} G] [_inst_2 : Group.{u2} G'] (H : Subgroup.{u1} G _inst_1) (e : MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))), Eq.{max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (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)) H) (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} G' _inst_2) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} G' _inst_2) G' (Subgroup.setLike.{u2} G' _inst_2)) (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H)) (Subgroup.mul.{u1} G _inst_1 H) (Subgroup.mul.{u2} G' _inst_2 (Subgroup.map.{u1, u2} G _inst_1 G' _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) H))) (Subgroup.equivMapOfInjective.{u1, u2} G _inst_1 G' _inst_2 H ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (MonoidHom.{u1, u2} G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} G G' (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquivClass.monoidHomClass.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))))))) e) (EquivLike.injective.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2))))) G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))) (MulEquiv.mulEquivClass.{u1, u2} G G' (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} G' (Monoid.toMulOneClass.{u2} G' (DivInvMonoid.toMonoid.{u2} G' (Group.toDivInvMonoid.{u2} G' _inst_2)))))) e)) (MulEquiv.subgroupMap.{u1, u2} G G' _inst_1 _inst_2 e H)
+but is expected to have type
+  forall {G : Type.{u2}} {G' : Type.{u1}} [_inst_1 : Group.{u2} G] [_inst_2 : Group.{u1} G'] (H : Subgroup.{u2} G _inst_1) (e : MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))), Eq.{max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (Subtype.{succ u2} G (fun (x : G) => Membership.mem.{u2, u2} G (Subgroup.{u2} G _inst_1) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u2} G _inst_1)) x H)) (Subtype.{succ u1} G' (fun (x : G') => Membership.mem.{u1, u1} G' (Subgroup.{u1} G' _inst_2) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G' _inst_2) G' (Subgroup.instSetLikeSubgroup.{u1} G' _inst_2)) x (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.mul.{u2} G _inst_1 H) (Subgroup.mul.{u1} G' _inst_2 (Subgroup.map.{u2, u1} G _inst_1 G' _inst_2 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) H))) (Subgroup.equivMapOfInjective.{u2, u1} G _inst_1 G' _inst_2 H (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} G G' (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquivClass.instMonoidHomClass.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1))) (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e) (EquivLike.injective.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2))))) G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} G G' (MulOneClass.toMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_1)))) (MulOneClass.toMul.{u1} G' (Monoid.toMulOneClass.{u1} G' (DivInvMonoid.toMonoid.{u1} G' (Group.toDivInvMonoid.{u1} G' _inst_2)))))) e)) (MulEquiv.subgroupMap.{u2, u1} G G' _inst_1 _inst_2 e H)
+Case conversion may be inaccurate. Consider using '#align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquivₓ'. -/
 @[simp, to_additive]
 theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
     H.equivMapOfInjective (e : G →* G') (EquivLike.injective e) = e.subgroupMap H :=
@@ -5262,11 +5683,15 @@ theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
   rfl
 #align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquiv
 #align add_subgroup.equiv_map_of_injective_coe_add_equiv AddSubgroup.equivMapOfInjective_coe_addEquiv
--/
 
 variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
 
-#print Subgroup.mem_sup /-
+/- warning: subgroup.mem_sup -> Subgroup.mem_sup is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) => Exists.{succ u1} C (fun (z : C) => Exists.{0} (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (fun (H : Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} C (fun (y : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) y s) (Exists.{succ u1} C (fun (z : C) => And (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z t) (Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) y z) x)))))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup Subgroup.mem_supₓ'. -/
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
   ⟨fun h => by
@@ -5283,17 +5708,25 @@ theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
     rintro ⟨y, hy, z, hz, rfl⟩ <;> exact mul_mem_sup hy hz⟩
 #align subgroup.mem_sup Subgroup.mem_sup
 #align add_subgroup.mem_sup AddSubgroup.mem_sup
--/
 
-#print Subgroup.mem_sup' /-
+/- warning: subgroup.mem_sup' -> Subgroup.mem_sup' is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.completeLattice.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) (fun (y : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) => Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) (fun (z : coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) s) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s))))) y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) t) C (coeSubtype.{succ u1} C (fun (x : C) => Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t))))) z)) x)))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {s : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {t : Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)} {x : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x (HasSup.sup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (Subgroup.instCompleteLatticeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))))) s t)) (Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) (fun (y : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x s)) => Exists.{succ u1} (Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) (fun (z : Subtype.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) x t)) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) s)) y) (Subtype.val.{succ u1} C (fun (x : C) => Membership.mem.{u1, u1} C (Set.{u1} C) (Set.instMembershipSet.{u1} C) x (SetLike.coe.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) t)) z)) x)))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_sup' Subgroup.mem_sup'ₓ'. -/
 @[to_additive]
 theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s)(z : t), (y : C) * z = x :=
   mem_sup.trans <| by simp only [SetLike.exists, coe_mk]
 #align subgroup.mem_sup' Subgroup.mem_sup'
 #align add_subgroup.mem_sup' AddSubgroup.mem_sup'
--/
 
-#print Subgroup.mem_closure_pair /-
+/- warning: subgroup.mem_closure_pair -> Subgroup.mem_closure_pair is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {x : C} {y : C} {z : C}, Iff (Membership.Mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.setLike.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z (Subgroup.closure.{u1} C (CommGroup.toGroup.{u1} C _inst_5) (Insert.insert.{u1, u1} C (Set.{u1} C) (Set.hasInsert.{u1} C) x (Singleton.singleton.{u1, u1} C (Set.{u1} C) (Set.hasSingleton.{u1} C) y)))) (Exists.{1} Int (fun (m : Int) => Exists.{1} Int (fun (n : Int) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toHasMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) x m) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) y n)) z)))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_5 : CommGroup.{u1} C] {x : C} {y : C} {z : C}, Iff (Membership.mem.{u1, u1} C (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5)) C (Subgroup.instSetLikeSubgroup.{u1} C (CommGroup.toGroup.{u1} C _inst_5))) z (Subgroup.closure.{u1} C (CommGroup.toGroup.{u1} C _inst_5) (Insert.insert.{u1, u1} C (Set.{u1} C) (Set.instInsertSet.{u1} C) x (Singleton.singleton.{u1, u1} C (Set.{u1} C) (Set.instSingletonSet.{u1} C) y)))) (Exists.{1} Int (fun (m : Int) => Exists.{1} Int (fun (n : Int) => Eq.{succ u1} C (HMul.hMul.{u1, u1, u1} C C C (instHMul.{u1} C (MulOneClass.toMul.{u1} C (Monoid.toMulOneClass.{u1} C (DivInvMonoid.toMonoid.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))))) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) x m) (HPow.hPow.{u1, 0, u1} C Int C (instHPow.{u1, 0} C Int (DivInvMonoid.Pow.{u1} C (Group.toDivInvMonoid.{u1} C (CommGroup.toGroup.{u1} C _inst_5)))) y n)) z)))
+Case conversion may be inaccurate. Consider using '#align subgroup.mem_closure_pair Subgroup.mem_closure_pairₓ'. -/
 @[to_additive]
 theorem mem_closure_pair {x y z : C} :
     z ∈ closure ({x, y} : Set C) ↔ ∃ m n : ℤ, x ^ m * y ^ n = z :=
@@ -5302,7 +5735,6 @@ theorem mem_closure_pair {x y z : C} :
   simp_rw [exists_prop, mem_closure_singleton, exists_exists_eq_and]
 #align subgroup.mem_closure_pair Subgroup.mem_closure_pair
 #align add_subgroup.mem_closure_pair AddSubgroup.mem_closure_pair
--/
 
 @[to_additive]
 instance : IsModularLattice (Subgroup C) :=
@@ -5318,7 +5750,12 @@ namespace Subgroup
 
 section SubgroupNormal
 
-#print Subgroup.normal_subgroupOf_iff /-
+/- warning: subgroup.normal_subgroup_of_iff -> Subgroup.normal_subgroupOf_iff is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (Iff (Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (forall (h : G) (k : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) h H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) k K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) k h) (Inv.inv.{u1} G (DivInvMonoid.toHasInv.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) k)) H)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (Iff (Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (forall (h : G) (k : 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)) h H) -> (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)) k K) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) k h) (Inv.inv.{u1} G (InvOneClass.toInv.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))) k)) H)))
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_subgroup_of_iff Subgroup.normal_subgroupOf_iffₓ'. -/
 @[to_additive]
 theorem normal_subgroupOf_iff {H K : Subgroup G} (hHK : H ≤ K) :
     (H.subgroupOf K).Normal ↔ ∀ h k, h ∈ H → k ∈ K → k * h * k⁻¹ ∈ H :=
@@ -5326,9 +5763,13 @@ theorem normal_subgroupOf_iff {H K : Subgroup G} (hHK : H ≤ K) :
     { conj_mem := fun h hm k => hN h.1 k.1 hm k.2 }⟩
 #align subgroup.normal_subgroup_of_iff Subgroup.normal_subgroupOf_iff
 #align add_subgroup.normal_add_subgroup_of_iff AddSubgroup.normal_addSubgroupOf_iff
--/
 
-#print Subgroup.prod_subgroupOf_prod_normal /-
+/- warning: subgroup.prod_subgroup_of_prod_normal -> Subgroup.prod_subgroupOf_prod_normal is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H₁ : Subgroup.{u1} G _inst_1} {K₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u2} N _inst_4} {K₂ : Subgroup.{u2} N _inst_4} [h₁ : Subgroup.Normal.{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)) K₁) (Subgroup.toGroup.{u1} G _inst_1 K₁) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K₁)] [h₂ : Subgroup.Normal.{u2} (coeSort.{succ u2, succ (succ u2)} (Subgroup.{u2} N _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4)) K₂) (Subgroup.toGroup.{u2} N _inst_4 K₂) (Subgroup.subgroupOf.{u2} N _inst_4 H₂ K₂)], Subgroup.Normal.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂)) (Subgroup.toGroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂)) (Subgroup.subgroupOf.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H₁ H₂) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] {H₁ : Subgroup.{u1} G _inst_1} {K₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u2} N _inst_4} {K₂ : Subgroup.{u2} N _inst_4} [h₁ : Subgroup.Normal.{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 K₁)) (Subgroup.toGroup.{u1} G _inst_1 K₁) (Subgroup.subgroupOf.{u1} G _inst_1 H₁ K₁)] [h₂ : Subgroup.Normal.{u2} (Subtype.{succ u2} N (fun (x : N) => Membership.mem.{u2, u2} N (Subgroup.{u2} N _inst_4) (SetLike.instMembership.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.instSetLikeSubgroup.{u2} N _inst_4)) x K₂)) (Subgroup.toGroup.{u2} N _inst_4 K₂) (Subgroup.subgroupOf.{u2} N _inst_4 H₂ K₂)], Subgroup.Normal.{max u1 u2} (Subtype.{succ (max u1 u2)} (Prod.{u1, u2} G N) (fun (x : Prod.{u1, u2} G N) => Membership.mem.{max u1 u2, max u1 u2} (Prod.{u1, u2} G N) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (SetLike.instMembership.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.instSetLikeSubgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4))) x (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂))) (Subgroup.toGroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂)) (Subgroup.subgroupOf.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H₁ H₂) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 K₁ K₂))
+Case conversion may be inaccurate. Consider using '#align subgroup.prod_subgroup_of_prod_normal Subgroup.prod_subgroupOf_prod_normalₓ'. -/
 @[to_additive]
 instance prod_subgroupOf_prod_normal {H₁ K₁ : Subgroup G} {H₂ K₂ : Subgroup N}
     [h₁ : (H₁.subgroupOf K₁).Normal] [h₂ : (H₂.subgroupOf K₂).Normal] :
@@ -5340,9 +5781,13 @@ instance prod_subgroupOf_prod_normal {H₁ K₁ : Subgroup G} {H₂ K₂ : Subgr
         ⟨(g : G × N).snd, (mem_prod.mp g.2).2⟩⟩
 #align subgroup.prod_subgroup_of_prod_normal Subgroup.prod_subgroupOf_prod_normal
 #align add_subgroup.sum_add_subgroup_of_sum_normal AddSubgroup.sum_addSubgroupOf_sum_normal
--/
 
-#print Subgroup.prod_normal /-
+/- warning: subgroup.prod_normal -> Subgroup.prod_normal is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u2} N _inst_4) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u2} N _inst_4 K], Subgroup.Normal.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u2} N _inst_4) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u2} N _inst_4 K], Subgroup.Normal.{max u1 u2} (Prod.{u1, u2} G N) (Prod.instGroupProd.{u1, u2} G N _inst_1 _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4 H K)
+Case conversion may be inaccurate. Consider using '#align subgroup.prod_normal Subgroup.prod_normalₓ'. -/
 @[to_additive]
 instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.Normal] :
     (H.Prod K).Normal
@@ -5351,9 +5796,13 @@ instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.N
       hK.conj_mem n.snd (Subgroup.mem_prod.mp hg).2 g.snd⟩
 #align subgroup.prod_normal Subgroup.prod_normal
 #align add_subgroup.sum_normal AddSubgroup.sum_normal
--/
 
-#print Subgroup.inf_subgroupOf_inf_normal_of_right /-
+/- warning: subgroup.inf_subgroup_of_inf_normal_of_right -> Subgroup.inf_subgroupOf_inf_normal_of_right is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) B' B) -> (forall [hN : Subgroup.Normal.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B') (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (B' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) B' B) -> (forall [hN : Subgroup.Normal.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B) (Subgroup.subgroupOf.{u1} G _inst_1 B' B)], Subgroup.Normal.{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 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B') (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)))
+Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_rightₓ'. -/
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
     [hN : (B'.subgroupOf B).Normal] : ((A ⊓ B').subgroupOf (A ⊓ B)).Normal :=
@@ -5363,9 +5812,13 @@ theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
         (normal_subgroupOf_iff hB).mp hN n g hn.2 (mem_inf.mp g.2).2⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_right
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_right AddSubgroup.inf_addSubgroupOf_inf_normal_of_right
--/
 
-#print Subgroup.inf_subgroupOf_inf_normal_of_left /-
+/- warning: subgroup.inf_subgroup_of_inf_normal_of_left -> Subgroup.inf_subgroupOf_inf_normal_of_left is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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)))) A' A) -> (forall [hN : Subgroup.Normal.{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)) A) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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)) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A' B) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) A B)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A' : Subgroup.{u1} G _inst_1} {A : Subgroup.{u1} G _inst_1} (B : Subgroup.{u1} G _inst_1), (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))))) A' A) -> (forall [hN : Subgroup.Normal.{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 A)) (Subgroup.toGroup.{u1} G _inst_1 A) (Subgroup.subgroupOf.{u1} G _inst_1 A' A)], Subgroup.Normal.{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 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B))) (Subgroup.toGroup.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A' B) (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) A B)))
+Case conversion may be inaccurate. Consider using '#align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_leftₓ'. -/
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (hA : A' ≤ A)
     [hN : (A'.subgroupOf A).Normal] : ((A' ⊓ B).subgroupOf (A ⊓ B)).Normal :=
@@ -5375,17 +5828,25 @@ theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (
         mul_mem (mul_mem (mem_inf.1 g.2).2 (mem_inf.1 n.2).2) (inv_mem (mem_inf.1 g.2).2)⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_left
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_left AddSubgroup.inf_addSubgroupOf_inf_normal_of_left
--/
 
-#print Subgroup.normal_inf_normal /-
+/- warning: subgroup.normal_inf_normal -> Subgroup.normal_inf_normal is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasInf.{u1} G _inst_1) H K)
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) [hH : Subgroup.Normal.{u1} G _inst_1 H] [hK : Subgroup.Normal.{u1} G _inst_1 K], Subgroup.Normal.{u1} G _inst_1 (HasInf.inf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instHasInfSubgroup.{u1} G _inst_1) H K)
+Case conversion may be inaccurate. Consider using '#align subgroup.normal_inf_normal Subgroup.normal_inf_normalₓ'. -/
 @[to_additive]
 instance normal_inf_normal (H K : Subgroup G) [hH : H.Normal] [hK : K.Normal] : (H ⊓ K).Normal :=
   ⟨fun n hmem g => ⟨hH.conj_mem n hmem.1 g, hK.conj_mem n hmem.2 g⟩⟩
 #align subgroup.normal_inf_normal Subgroup.normal_inf_normal
 #align add_subgroup.normal_inf_normal AddSubgroup.normal_inf_normal
--/
 
-#print Subgroup.subgroupOf_sup /-
+/- warning: subgroup.subgroup_of_sup -> Subgroup.subgroupOf_sup is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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)))) A B) -> (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)))) A' B) -> (Eq.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1)))) A A') B) (HasSup.sup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.completeLattice.{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)) B) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (A : Subgroup.{u1} G _inst_1) (A' : Subgroup.{u1} G _inst_1) (B : Subgroup.{u1} G _inst_1), (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))))) A B) -> (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))))) A' B) -> (Eq.{succ 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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.subgroupOf.{u1} G _inst_1 (HasSup.sup.{u1} (Subgroup.{u1} G _inst_1) (SemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (Lattice.toSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toLattice.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)))) A A') B) (HasSup.sup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (SemilatticeSup.toHasSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Lattice.toSemilatticeSup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (CompleteLattice.toLattice.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B)) (Subgroup.instCompleteLatticeSubgroup.{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 B)) (Subgroup.toGroup.{u1} G _inst_1 B))))) (Subgroup.subgroupOf.{u1} G _inst_1 A B) (Subgroup.subgroupOf.{u1} G _inst_1 A' B)))
+Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_of_sup Subgroup.subgroupOf_supₓ'. -/
 @[to_additive]
 theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
     (A ⊔ A').subgroupOf B = A.subgroupOf B ⊔ A'.subgroupOf B :=
@@ -5397,9 +5858,13 @@ theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
     rw [inf_of_le_right (sup_le hA hA'), inf_of_le_right hA', inf_of_le_right hA]
 #align subgroup.subgroup_of_sup Subgroup.subgroupOf_sup
 #align add_subgroup.add_subgroup_of_sup AddSubgroup.addSubgroupOf_sup
--/
 
-#print Subgroup.SubgroupNormal.mem_comm /-
+/- warning: subgroup.subgroup_normal.mem_comm -> Subgroup.SubgroupNormal.mem_comm is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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)))) H K) -> (forall [hN : Subgroup.Normal.{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)) K) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)] {a : G} {b : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) b K) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1}, (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))))) H K) -> (forall [hN : Subgroup.Normal.{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 K)) (Subgroup.toGroup.{u1} G _inst_1 K) (Subgroup.subgroupOf.{u1} G _inst_1 H K)] {a : G} {b : 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)) b K) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) a b) H) -> (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)) (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) b a) H))
+Case conversion may be inaccurate. Consider using '#align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_commₓ'. -/
 @[to_additive]
 theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgroupOf K).Normal]
     {a b : G} (hb : b ∈ K) (h : a * b ∈ H) : b * a ∈ H :=
@@ -5408,9 +5873,13 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
   rwa [mul_assoc, mul_assoc, mul_right_inv, mul_one] at this
 #align subgroup.subgroup_normal.mem_comm Subgroup.SubgroupNormal.mem_comm
 #align add_subgroup.subgroup_normal.mem_comm AddSubgroup.SubgroupNormal.mem_comm
--/
 
-#print Subgroup.commute_of_normal_of_disjoint /-
+/- warning: subgroup.commute_of_normal_of_disjoint -> Subgroup.commute_of_normal_of_disjoint is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H₁ : Subgroup.{u1} G _inst_1) (H₂ : Subgroup.{u1} G _inst_1), (Subgroup.Normal.{u1} G _inst_1 H₁) -> (Subgroup.Normal.{u1} G _inst_1 H₂) -> (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (forall (x : G) (y : G), (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Commute.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H₁ : Subgroup.{u1} G _inst_1) (H₂ : Subgroup.{u1} G _inst_1), (Subgroup.Normal.{u1} G _inst_1 H₁) -> (Subgroup.Normal.{u1} G _inst_1 H₂) -> (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) -> (forall (x : G) (y : 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 H₁) -> (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)) y H₂) -> (Commute.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) x y))
+Case conversion may be inaccurate. Consider using '#align subgroup.commute_of_normal_of_disjoint Subgroup.commute_of_normal_of_disjointₓ'. -/
 /-- Elements of disjoint, normal subgroups commute. -/
 @[to_additive "Elements of disjoint, normal subgroups commute."]
 theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Normal) (hH₂ : H₂.Normal)
@@ -5429,28 +5898,40 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
     apply hH₂.conj_mem _ hy
 #align subgroup.commute_of_normal_of_disjoint Subgroup.commute_of_normal_of_disjoint
 #align add_subgroup.commute_of_normal_of_disjoint AddSubgroup.commute_of_normal_of_disjoint
--/
 
 end SubgroupNormal
 
-#print Subgroup.disjoint_def /-
+/- warning: subgroup.disjoint_def -> Subgroup.disjoint_def is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {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 H₁) -> (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 H₂) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
+Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_def Subgroup.disjoint_defₓ'. -/
 @[to_additive]
 theorem disjoint_def {H₁ H₂ : Subgroup G} : Disjoint H₁ H₂ ↔ ∀ {x : G}, x ∈ H₁ → x ∈ H₂ → x = 1 :=
   disjoint_iff_inf_le.trans <| by simp only [Disjoint, SetLike.le_def, mem_inf, mem_bot, and_imp]
 #align subgroup.disjoint_def Subgroup.disjoint_def
 #align add_subgroup.disjoint_def AddSubgroup.disjoint_def
--/
 
-#print Subgroup.disjoint_def' /-
+/- warning: subgroup.disjoint_def' -> Subgroup.disjoint_def' is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G x y) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : 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 H₁) -> (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)) y H₂) -> (Eq.{succ u1} G x y) -> (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))))
+Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_def' Subgroup.disjoint_def'ₓ'. -/
 @[to_additive]
 theorem disjoint_def' {H₁ H₂ : Subgroup G} :
     Disjoint H₁ H₂ ↔ ∀ {x y : G}, x ∈ H₁ → y ∈ H₂ → x = y → x = 1 :=
   disjoint_def.trans ⟨fun h x y hx hy hxy => h hx <| hxy.symm ▸ hy, fun h x hx hx' => h hx hx' rfl⟩
 #align subgroup.disjoint_def' Subgroup.disjoint_def'
 #align add_subgroup.disjoint_def' AddSubgroup.disjoint_def'
--/
 
-#print Subgroup.disjoint_iff_mul_eq_one /-
+/- warning: subgroup.disjoint_iff_mul_eq_one -> Subgroup.disjoint_iff_mul_eq_one is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : G}, (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁) -> (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) y H₂) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) -> (And (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))))) (Eq.{succ u1} G y (OfNat.ofNat.{u1} G 1 (OfNat.mk.{u1} G 1 (One.one.{u1} G (MulOneClass.toHasOne.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, Iff (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) (forall {x : G} {y : 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 H₁) -> (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)) y H₂) -> (Eq.{succ u1} G (HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x y) (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) -> (And (Eq.{succ u1} G x (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1))))))) (Eq.{succ u1} G y (OfNat.ofNat.{u1} G 1 (One.toOfNat1.{u1} G (InvOneClass.toOne.{u1} G (DivInvOneMonoid.toInvOneClass.{u1} G (DivisionMonoid.toDivInvOneMonoid.{u1} G (Group.toDivisionMonoid.{u1} G _inst_1)))))))))
+Case conversion may be inaccurate. Consider using '#align subgroup.disjoint_iff_mul_eq_one Subgroup.disjoint_iff_mul_eq_oneₓ'. -/
 @[to_additive]
 theorem disjoint_iff_mul_eq_one {H₁ H₂ : Subgroup G} :
     Disjoint H₁ H₂ ↔ ∀ {x y : G}, x ∈ H₁ → y ∈ H₂ → x * y = 1 → x = 1 ∧ y = 1 :=
@@ -5461,9 +5942,13 @@ theorem disjoint_iff_mul_eq_one {H₁ H₂ : Subgroup G} :
       fun h x y hx hy hxy => (h hx (H₂.inv_mem hy) (mul_inv_eq_one.mpr hxy)).1⟩
 #align subgroup.disjoint_iff_mul_eq_one Subgroup.disjoint_iff_mul_eq_one
 #align add_subgroup.disjoint_iff_add_eq_zero AddSubgroup.disjoint_iff_add_eq_zero
--/
 
-#print Subgroup.mul_injective_of_disjoint /-
+/- warning: subgroup.mul_injective_of_disjoint -> Subgroup.mul_injective_of_disjoint is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (Disjoint.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (BoundedOrder.toOrderBot.{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)))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) H₁ H₂) -> (Function.Injective.{succ u1, succ u1} (Prod.{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)) H₁) (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)) H₂)) G (fun (g : Prod.{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)) H₁) (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)) H₂)) => HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₁) G (HasLiftT.mk.{succ u1, succ 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)) H₁) G (CoeTCₓ.coe.{succ u1, succ 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)) H₁) G (coeBase.{succ u1, succ 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)) H₁) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₁))))) (Prod.fst.{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)) H₁) (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)) H₂) g)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (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)) H₂) G (HasLiftT.mk.{succ u1, succ 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)) H₂) G (CoeTCₓ.coe.{succ u1, succ 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)) H₂) G (coeBase.{succ u1, succ 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)) H₂) G (coeSubtype.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x H₂))))) (Prod.snd.{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)) H₁) (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)) H₂) g))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H₁ : Subgroup.{u1} G _inst_1} {H₂ : Subgroup.{u1} G _inst_1}, (Disjoint.{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))) (BoundedOrder.toOrderBot.{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))))) (CompleteLattice.toBoundedOrder.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))) H₁ H₂) -> (Function.Injective.{succ u1, succ u1} (Prod.{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 H₁)) (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 H₂))) G (fun (g : Prod.{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 H₁)) (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 H₂))) => HMul.hMul.{u1, u1, u1} G G G (instHMul.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₁)) (Prod.fst.{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 H₁)) (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 H₂)) g)) (Subtype.val.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Set.{u1} G) (Set.instMembershipSet.{u1} G) x (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) H₂)) (Prod.snd.{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 H₁)) (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 H₂)) g))))
+Case conversion may be inaccurate. Consider using '#align subgroup.mul_injective_of_disjoint Subgroup.mul_injective_of_disjointₓ'. -/
 @[to_additive]
 theorem mul_injective_of_disjoint {H₁ H₂ : Subgroup G} (h : Disjoint H₁ H₂) :
     Function.Injective (fun g => g.1 * g.2 : H₁ × H₂ → G) :=
@@ -5475,7 +5960,6 @@ theorem mul_injective_of_disjoint {H₁ H₂ : Subgroup G} (h : Disjoint H₁ H
     Subtype.ext_iff, eq_comm, ← Prod.ext_iff] at hxy
 #align subgroup.mul_injective_of_disjoint Subgroup.mul_injective_of_disjoint
 #align add_subgroup.add_injective_of_disjoint AddSubgroup.add_injective_of_disjoint
--/
 
 end Subgroup
 
@@ -5483,7 +5967,12 @@ namespace IsConj
 
 open Subgroup
 
-#print IsConj.normalClosure_eq_top_of /-
+/- warning: is_conj.normal_closure_eq_top_of -> IsConj.normalClosure_eq_top_of is a dubious translation:
+lean 3 declaration is
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Subgroup.{u1} G _inst_1} [hn : Subgroup.Normal.{u1} G _inst_1 N] {g : G} {g' : G} {hg : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g N} {hg' : Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g' N}, (IsConj.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g g') -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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)) N) (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)) N)) (Set.hasSingleton.{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)) N)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x N) g hg))) (Top.top.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.hasTop.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)))) -> (Eq.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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)) N) (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)) N)) (Set.hasSingleton.{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)) N)) (Subtype.mk.{succ u1} G (fun (x : G) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x N) g' hg'))) (Top.top.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.hasTop.{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)) N) (Subgroup.toGroup.{u1} G _inst_1 N))))
+but is expected to have type
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Subgroup.{u1} G _inst_1} [hn : Subgroup.Normal.{u1} G _inst_1 N] {g : G} {g' : G} {hg : 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)) g N} {hg' : 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)) g' N}, (IsConj.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g g') -> (Eq.{succ 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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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 N)) (Set.{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 N))) (Set.instSingletonSet.{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 N))) (Subtype.mk.{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 N) g hg))) (Top.top.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.instTopSubgroup.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)))) -> (Eq.{succ 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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.normalClosure.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N) (Singleton.singleton.{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 N)) (Set.{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 N))) (Set.instSingletonSet.{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 N))) (Subtype.mk.{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 N) g' hg'))) (Top.top.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N)) (Subgroup.instTopSubgroup.{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 N)) (Subgroup.toGroup.{u1} G _inst_1 N))))
+Case conversion may be inaccurate. Consider using '#align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_ofₓ'. -/
 theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg : g ∈ N}
     {hg' : g' ∈ N} (hc : IsConj g g') (ht : normalClosure ({⟨g, hg⟩} : Set N) = ⊤) :
     normalClosure ({⟨g', hg'⟩} : Set N) = ⊤ :=
@@ -5510,7 +5999,6 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
     MonoidHom.restrict_apply, mem_comap]
   exact subset_normal_closure (Set.mem_singleton _)
 #align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_of
--/
 
 end IsConj
 
Diff
@@ -243,31 +243,23 @@ omit hSG
 
 include hSM
 
-/- warning: subgroup_class.has_inv -> SubgroupClass.inv is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {H : S}, Inv.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H)
-but is expected to have type
-  forall {M : Type.{u1}} [S : Group.{u1} M] {_inst_4 : Type.{u2}} {_inst_5 : _inst_4} [hSM : SetLike.{u2, u1} _inst_4 M] [H : SubgroupClass.{u2, u1} _inst_4 M (Group.toDivInvMonoid.{u1} M S) hSM], Inv.{u1} (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u2} M _inst_4 (SetLike.instMembership.{u2, u1} _inst_4 M hSM) x _inst_5))
-Case conversion may be inaccurate. Consider using '#align subgroup_class.has_inv SubgroupClass.invₓ'. -/
+#print SubgroupClass.inv /-
 /-- A subgroup of a group inherits an inverse. -/
 @[to_additive "An additive subgroup of a `add_group` inherits an inverse."]
 instance inv : Inv H :=
   ⟨fun a => ⟨a⁻¹, inv_mem a.2⟩⟩
 #align subgroup_class.has_inv SubgroupClass.inv
 #align add_subgroup_class.has_neg AddSubgroupClass.neg
+-/
 
-/- warning: subgroup_class.has_div -> SubgroupClass.div is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {H : S}, Div.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H)
-but is expected to have type
-  forall {M : Type.{u1}} [S : Group.{u1} M] {_inst_4 : Type.{u2}} {_inst_5 : _inst_4} [hSM : SetLike.{u2, u1} _inst_4 M] [H : SubgroupClass.{u2, u1} _inst_4 M (Group.toDivInvMonoid.{u1} M S) hSM], Div.{u1} (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u2} M _inst_4 (SetLike.instMembership.{u2, u1} _inst_4 M hSM) x _inst_5))
-Case conversion may be inaccurate. Consider using '#align subgroup_class.has_div SubgroupClass.divₓ'. -/
+#print SubgroupClass.div /-
 /-- A subgroup of a group inherits a division -/
 @[to_additive "An additive subgroup of an `add_group` inherits a subtraction."]
 instance div : Div H :=
   ⟨fun a b => ⟨a / b, div_mem a.2 b.2⟩⟩
 #align subgroup_class.has_div SubgroupClass.div
 #align add_subgroup_class.has_sub AddSubgroupClass.sub
+-/
 
 omit hSM
 
@@ -294,7 +286,7 @@ instance zpow : Pow H ℤ :=
 lean 3 declaration is
   forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {H : S} (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H), Eq.{succ u1} M ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) (Inv.inv.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (SubgroupClass.inv.{u1, u2} M S _inst_4 _inst_5 hSM H) x)) (Inv.inv.{u1} M (DivInvMonoid.toHasInv.{u1} M _inst_4) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) x))
 but is expected to have type
-  forall {M : Type.{u2}} [S : Group.{u2} M] {_inst_4 : Type.{u1}} {_inst_5 : _inst_4} [hSM : SetLike.{u1, u2} _inst_4 M] [H : SubgroupClass.{u1, u2} _inst_4 M (Group.toDivInvMonoid.{u2} M S) hSM] (x : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)), Eq.{succ u2} M (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) (Inv.inv.{u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (SubgroupClass.inv.{u2, u1} M S _inst_4 _inst_5 hSM H) x)) (Inv.inv.{u2} M (InvOneClass.toInv.{u2} M (DivInvOneMonoid.toInvOneClass.{u2} M (DivisionMonoid.toDivInvOneMonoid.{u2} M (Group.toDivisionMonoid.{u2} M S)))) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) x))
+  forall {M : Type.{u2}} [S : Group.{u2} M] {_inst_4 : Type.{u1}} {_inst_5 : _inst_4} [hSM : SetLike.{u1, u2} _inst_4 M] [H : SubgroupClass.{u1, u2} _inst_4 M (Group.toDivInvMonoid.{u2} M S) hSM] (x : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)), Eq.{succ u2} M (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) (Inv.inv.{u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (SubgroupClass.inv.{u2, u1} M _inst_4 (Group.toDivInvMonoid.{u2} M S) hSM H _inst_5) x)) (Inv.inv.{u2} M (InvOneClass.toInv.{u2} M (DivInvOneMonoid.toInvOneClass.{u2} M (DivisionMonoid.toDivInvOneMonoid.{u2} M (Group.toDivisionMonoid.{u2} M S)))) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) x))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_inv SubgroupClass.coe_invₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : M) :=
@@ -306,7 +298,7 @@ theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : M) :=
 lean 3 declaration is
   forall {M : Type.{u1}} {S : Type.{u2}} [_inst_4 : DivInvMonoid.{u1} M] [_inst_5 : SetLike.{u2, u1} S M] [hSM : SubgroupClass.{u2, u1} S M _inst_4 _inst_5] {H : S} (x : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (y : coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H), Eq.{succ u1} M ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) (HDiv.hDiv.{u1, u1, u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (instHDiv.{u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) (SubgroupClass.div.{u1, u2} M S _inst_4 _inst_5 hSM H)) x y)) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toHasDiv.{u1} M _inst_4)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) x) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeBase.{succ u1, succ u1} (coeSort.{succ u2, succ (succ u1)} S Type.{u1} (SetLike.hasCoeToSort.{u2, u1} S M _inst_5) H) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u2} M S (SetLike.hasMem.{u2, u1} S M _inst_5) x H))))) y))
 but is expected to have type
-  forall {M : Type.{u2}} [S : Group.{u2} M] {_inst_4 : Type.{u1}} {_inst_5 : _inst_4} [hSM : SetLike.{u1, u2} _inst_4 M] [H : SubgroupClass.{u1, u2} _inst_4 M (Group.toDivInvMonoid.{u2} M S) hSM] (x : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)), Eq.{succ u2} M (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) (HDiv.hDiv.{u2, u2, u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (instHDiv.{u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (SubgroupClass.div.{u2, u1} M S _inst_4 _inst_5 hSM H)) x y)) (HDiv.hDiv.{u2, u2, u2} M M M (instHDiv.{u2} M (DivInvMonoid.toDiv.{u2} M (Group.toDivInvMonoid.{u2} M S))) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) x) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) y))
+  forall {M : Type.{u2}} [S : Group.{u2} M] {_inst_4 : Type.{u1}} {_inst_5 : _inst_4} [hSM : SetLike.{u1, u2} _inst_4 M] [H : SubgroupClass.{u1, u2} _inst_4 M (Group.toDivInvMonoid.{u2} M S) hSM] (x : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)), Eq.{succ u2} M (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) (HDiv.hDiv.{u2, u2, u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (instHDiv.{u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5)) (SubgroupClass.div.{u2, u1} M _inst_4 (Group.toDivInvMonoid.{u2} M S) hSM H _inst_5)) x y)) (HDiv.hDiv.{u2, u2, u2} M M M (instHDiv.{u2} M (DivInvMonoid.toDiv.{u2} M (Group.toDivInvMonoid.{u2} M S))) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) x) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u1} M _inst_4 (SetLike.instMembership.{u1, u2} _inst_4 M hSM) x _inst_5) y))
 Case conversion may be inaccurate. Consider using '#align subgroup_class.coe_div SubgroupClass.coe_divₓ'. -/
 @[simp, norm_cast, to_additive]
 theorem coe_div (x y : H) : (↑(x / y) : M) = ↑x / ↑y :=
@@ -2118,7 +2110,7 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι K)) (Exists.{u2} ι (fun (i : ι) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (K i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10296 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10298 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10296 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10298) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [hι : Nonempty.{u2} ι] {K : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10324 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10326 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10324 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10326) K) -> (forall {x : G}, Iff (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 (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι K)) (Exists.{u2} ι (fun (i : ι) => 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 (K i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
@@ -2141,7 +2133,7 @@ theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G}
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (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))))) S) -> (Eq.{succ u1} (Set.{u1} G) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => (fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Subgroup.{u1} G _inst_1) (Set.{u1} G) (HasLiftT.mk.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (CoeTCₓ.coe.{succ u1, succ u1} (Subgroup.{u1} G _inst_1) (Set.{u1} G) (SetLike.Set.hasCoeT.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (S i))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10545 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10547 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10545 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10547) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {ι : Sort.{u2}} [_inst_4 : Nonempty.{u2} ι] {S : ι -> (Subgroup.{u1} G _inst_1)}, (Directed.{u1, u2} (Subgroup.{u1} G _inst_1) ι (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10573 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10575 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10573 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10575) S) -> (Eq.{succ u1} (Set.{u1} G) (SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (supᵢ.{u1, u2} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) ι (fun (i : ι) => S i))) (Set.unionᵢ.{u1, u2} G ι (fun (i : ι) => SetLike.coe.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1) (S i))))
 Case conversion may be inaccurate. Consider using '#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directedₓ'. -/
 @[to_additive]
 theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
@@ -2154,7 +2146,7 @@ theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS :
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (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))))) K) -> (forall {x : G}, Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeSup.toHasSup.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeSup.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.completeLattice.{u1} G _inst_1))) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => Exists.{0} (Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) (fun (H : Membership.Mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.hasMem.{u1} (Subgroup.{u1} G _inst_1)) s K) => Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) x s))))
 but is expected to have type
-  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10647 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10649 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10647 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10649) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
+  forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {K : Set.{u1} (Subgroup.{u1} G _inst_1)}, (Set.Nonempty.{u1} (Subgroup.{u1} G _inst_1) K) -> (DirectedOn.{u1} (Subgroup.{u1} G _inst_1) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10675 : Subgroup.{u1} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10677 : Subgroup.{u1} G _inst_1) => 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))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10675 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.10677) K) -> (forall {x : G}, Iff (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 (SupSet.supₛ.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toSupSet.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1)) K)) (Exists.{succ u1} (Subgroup.{u1} G _inst_1) (fun (s : Subgroup.{u1} G _inst_1) => And (Membership.mem.{u1, u1} (Subgroup.{u1} G _inst_1) (Set.{u1} (Subgroup.{u1} G _inst_1)) (Set.instMembershipSet.{u1} (Subgroup.{u1} G _inst_1)) s K) (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 s))))
 Case conversion may be inaccurate. Consider using '#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOnₓ'. -/
 @[to_additive]
 theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
@@ -2838,7 +2830,7 @@ theorem mem_prod {H : Subgroup G} {K : Subgroup N} {p : G × N} : p ∈ H.Prod K
 lean 3 declaration is
   forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {N : Type.{u2}} [_inst_4 : Group.{u2} N], Relator.LiftFun.{succ u1, succ u1, max (succ u2) (succ (max u1 u2)), max (succ u2) (succ (max u1 u2))} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) ((Subgroup.{u2} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))) (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))))) (Relator.LiftFun.{succ u2, succ u2, succ (max u1 u2), succ (max u1 u2)} (Subgroup.{u2} N _inst_4) (Subgroup.{u2} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (LE.le.{u2} (Subgroup.{u2} N _inst_4) (Preorder.toLE.{u2} (Subgroup.{u2} N _inst_4) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} N _inst_4) (SetLike.partialOrder.{u2, u2} (Subgroup.{u2} N _inst_4) N (Subgroup.setLike.{u2} N _inst_4))))) (LE.le.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Preorder.toLE.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (SetLike.partialOrder.{max u1 u2, max u1 u2} (Subgroup.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4)) (Prod.{u1, u2} G N) (Subgroup.setLike.{max u1 u2} (Prod.{u1, u2} G N) (Prod.group.{u1, u2} G N _inst_1 _inst_4))))))) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4) (Subgroup.prod.{u1, u2} G _inst_1 N _inst_4)
 but is expected to have type
-  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14130 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14132 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14130 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14132) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14148 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14150 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14148 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14150) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14163 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14165 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14163 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14165)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
+  forall {G : Type.{u2}} [_inst_1 : Group.{u2} G] {N : Type.{u1}} [_inst_4 : Group.{u1} N], Relator.LiftFun.{succ u2, succ u2, max (succ u1) (succ (max u2 u1)), max (succ u1) (succ (max u2 u1))} (Subgroup.{u2} G _inst_1) (Subgroup.{u2} G _inst_1) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) ((Subgroup.{u1} N _inst_4) -> (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4))) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14158 : Subgroup.{u2} G _inst_1) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14160 : Subgroup.{u2} G _inst_1) => LE.le.{u2} (Subgroup.{u2} G _inst_1) (Preorder.toLE.{u2} (Subgroup.{u2} G _inst_1) (PartialOrder.toPreorder.{u2} (Subgroup.{u2} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u2} (Subgroup.{u2} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Subgroup.{u2} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u2} G _inst_1))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14158 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14160) (Relator.LiftFun.{succ u1, succ u1, succ (max u2 u1), succ (max u2 u1)} (Subgroup.{u1} N _inst_4) (Subgroup.{u1} N _inst_4) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176 : Subgroup.{u1} N _inst_4) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14178 : Subgroup.{u1} N _inst_4) => LE.le.{u1} (Subgroup.{u1} N _inst_4) (Preorder.toLE.{u1} (Subgroup.{u1} N _inst_4) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} N _inst_4) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} N _inst_4) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} N _inst_4) (Subgroup.instCompleteLatticeSubgroup.{u1} N _inst_4))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14176 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14178) (fun (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14191 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14193 : Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) => LE.le.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Preorder.toLE.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (PartialOrder.toPreorder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteSemilatticeInf.toPartialOrder.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (CompleteLattice.toCompleteSemilatticeInf.{max u2 u1} (Subgroup.{max u1 u2} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)) (Subgroup.instCompleteLatticeSubgroup.{max u2 u1} (Prod.{u2, u1} G N) (Prod.instGroupProd.{u2, u1} G N _inst_1 _inst_4)))))) x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14191 x._@.Mathlib.GroupTheory.Subgroup.Basic._hyg.14193)) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4) (Subgroup.prod.{u2, u1} G _inst_1 N _inst_4)
 Case conversion may be inaccurate. Consider using '#align subgroup.prod_mono Subgroup.prod_monoₓ'. -/
 @[to_additive prod_mono]
 theorem prod_mono : ((· ≤ ·) ⇒ (· ≤ ·) ⇒ (· ≤ ·)) (@prod G _ N _) (@prod G _ N _) :=

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 1 (#12338)

A PR accompanying #12339.

Zulip discussion

Diff
@@ -3123,7 +3123,7 @@ theorem comap_normalizer_eq_of_injective_of_le_range {N : Type*} [Group N] (H :
 theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
     H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer := by
   apply comap_normalizer_eq_of_injective_of_le_range
-  exact Subtype.coe_injective
+  · exact Subtype.coe_injective
   simpa
 #align subgroup.subgroup_of_normalizer_eq Subgroup.subgroupOf_normalizer_eq
 #align add_subgroup.add_subgroup_of_normalizer_eq AddSubgroup.addSubgroupOf_normalizer_eq
chore: remove unnecessary cdots (#12417)

These · are scoping when there is a single active goal.

These were found using a modification of the linter at #12339.

Diff
@@ -3512,8 +3512,8 @@ theorem subgroupOf_sup (A A' B : Subgroup G) (hA : A ≤ B) (hA' : A' ≤ B) :
   refine'
     map_injective_of_ker_le B.subtype (ker_le_comap _ _)
       (le_trans (ker_le_comap B.subtype _) le_sup_left) _
-  · simp only [subgroupOf, map_comap_eq, map_sup, subtype_range]
-    rw [inf_of_le_right (sup_le hA hA'), inf_of_le_right hA', inf_of_le_right hA]
+  simp only [subgroupOf, map_comap_eq, map_sup, subtype_range]
+  rw [inf_of_le_right (sup_le hA hA'), inf_of_le_right hA', inf_of_le_right hA]
 #align subgroup.subgroup_of_sup Subgroup.subgroupOf_sup
 #align add_subgroup.add_subgroup_of_sup AddSubgroup.addSubgroupOf_sup
 
chore(GroupTheory): reformat deprecation dates (#12406)

Try to have the date on the same line as the attribute: this makes it easier to rewrite these into machine-readable form. One date is was added: the deprecation was in the same PR as nearby lemmas.

Diff
@@ -206,8 +206,7 @@ end InvMemClass
 
 namespace SubgroupClass
 
--- deprecated since 15 January 2024
-@[to_additive (attr := deprecated)] alias coe_inv := InvMemClass.coe_inv
+@[to_additive (attr := deprecated)] alias coe_inv := InvMemClass.coe_inv -- 2024-01-15
 
 -- Here we assume H, K, and L are subgroups, but in fact any one of them
 -- could be allowed to be a subsemigroup.
chore: Rename a few lemmas about Pi.mulSingle (#12317)

Before this PR, the MonoidHom version of Pi.mulSingle was called MonoidHom.single for brevity; but this is confusing when contrasted with MulHom.single which is about Pi.single.

After this PR, the name is MonoidHom.mulSingle.

Also fix the name of Pi.single_div since it is about Pi.mulSingle (and we don't have the lemma that would be called Pi.single_div).

Diff
@@ -1897,8 +1897,8 @@ theorem pi_eq_bot_iff (H : ∀ i, Subgroup (f i)) : pi Set.univ H = ⊥ ↔ ∀
     simp only [eq_bot_iff_forall]
     constructor
     · intro h i x hx
-      have : MonoidHom.single f i x = 1 :=
-        h (MonoidHom.single f i x) ((mulSingle_mem_pi i x).mpr fun _ => hx)
+      have : MonoidHom.mulSingle f i x = 1 :=
+        h (MonoidHom.mulSingle f i x) ((mulSingle_mem_pi i x).mpr fun _ => hx)
       simpa using congr_fun this i
     · exact fun h x hx => funext fun i => h _ _ (hx i trivial)
 #align subgroup.pi_eq_bot_iff Subgroup.pi_eq_bot_iff
chore: refactor to avoid importing Ring for Group topics (#11913)

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

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

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

chore: refactor to avoid importing Ring for Group topics (#11913)

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

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

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

chore: refactor to avoid importing Ring for Group topics (#11913)

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

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

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

Diff
@@ -5,8 +5,10 @@ Authors: Kexing Ying
 -/
 import Mathlib.Algebra.Group.Conj
 import Mathlib.Algebra.Group.Pi.Lemmas
+import Mathlib.Algebra.Order.Group.Abs
 import Mathlib.Data.Set.Image
-import Mathlib.GroupTheory.Submonoid.Centralizer
+import Mathlib.GroupTheory.Subsemigroup.Operations
+import Mathlib.GroupTheory.Submonoid.Operations
 import Mathlib.Order.Atoms
 import Mathlib.Tactic.ApplyFun
 
@@ -2056,89 +2058,6 @@ instance topCharacteristic : Characteristic (⊤ : Subgroup G) :=
 #align subgroup.top_characteristic Subgroup.topCharacteristic
 #align add_subgroup.top_characteristic AddSubgroup.topCharacteristic
 
-variable (G)
-
-/-- The center of a group `G` is the set of elements that commute with everything in `G` -/
-@[to_additive
-      "The center of an additive group `G` is the set of elements that commute with
-      everything in `G`"]
-def center : Subgroup G :=
-  { Submonoid.center G with
-    carrier := Set.center G
-    inv_mem' := Set.inv_mem_center }
-#align subgroup.center Subgroup.center
-#align add_subgroup.center AddSubgroup.center
-
-@[to_additive]
-theorem coe_center : ↑(center G) = Set.center G :=
-  rfl
-#align subgroup.coe_center Subgroup.coe_center
-#align add_subgroup.coe_center AddSubgroup.coe_center
-
-@[to_additive (attr := simp)]
-theorem center_toSubmonoid : (center G).toSubmonoid = Submonoid.center G :=
-  rfl
-#align subgroup.center_to_submonoid Subgroup.center_toSubmonoid
-#align add_subgroup.center_to_add_submonoid AddSubgroup.center_toAddSubmonoid
-
-/-- For a group with zero, the center of the units is the same as the units of the center. -/
-@[simps! apply_val_coe symm_apply_coe_val]
-def centerUnitsEquivUnitsCenter (G₀ : Type*) [GroupWithZero G₀] :
-    Subgroup.center (G₀ˣ) ≃* (Submonoid.center G₀)ˣ where
-  toFun := MonoidHom.toHomUnits <|
-    { toFun := fun u ↦ ⟨(u : G₀ˣ),
-      (Submonoid.mem_center_iff.mpr (fun r ↦ by
-          rcases eq_or_ne r 0 with (rfl | hr)
-          · rw [mul_zero, zero_mul]
-          exact congrArg Units.val <| (u.2.comm <| Units.mk0 r hr).symm))⟩
-      map_one' := rfl
-      map_mul' := fun _ _ ↦ rfl }
-  invFun u := unitsCenterToCenterUnits G₀ u
-  left_inv _ := by ext; rfl
-  right_inv _ := by ext; rfl
-  map_mul' := map_mul _
-
-variable {G}
-
-@[to_additive]
-theorem mem_center_iff {z : G} : z ∈ center G ↔ ∀ g, g * z = z * g := by
-  rw [← Semigroup.mem_center_iff]
-  exact Iff.rfl
-#align subgroup.mem_center_iff Subgroup.mem_center_iff
-#align add_subgroup.mem_center_iff AddSubgroup.mem_center_iff
-
-instance decidableMemCenter (z : G) [Decidable (∀ g, g * z = z * g)] : Decidable (z ∈ center G) :=
-  decidable_of_iff' _ mem_center_iff
-#align subgroup.decidable_mem_center Subgroup.decidableMemCenter
-
-@[to_additive]
-instance centerCharacteristic : (center G).Characteristic := by
-  refine' characteristic_iff_comap_le.mpr fun ϕ g hg => _
-  rw [mem_center_iff]
-  intro h
-  rw [← ϕ.injective.eq_iff, ϕ.map_mul, ϕ.map_mul]
-  exact (hg.comm (ϕ h)).symm
-#align subgroup.center_characteristic Subgroup.centerCharacteristic
-#align add_subgroup.center_characteristic AddSubgroup.centerCharacteristic
-
-theorem _root_.CommGroup.center_eq_top {G : Type*} [CommGroup G] : center G = ⊤ := by
-  rw [eq_top_iff']
-  intro x
-  rw [Subgroup.mem_center_iff]
-  intro y
-  exact mul_comm y x
-#align comm_group.center_eq_top CommGroup.center_eq_top
-
-/-- A group is commutative if the center is the whole group -/
-def _root_.Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
-  { (_ : Group G) with
-    mul_comm := by
-      rw [eq_top_iff'] at h
-      intro x y
-      apply Subgroup.mem_center_iff.mp _ x
-      exact h y
-  }
-#align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTop
 
 variable (H)
 
@@ -2217,12 +2136,6 @@ theorem normalizer_eq_top : H.normalizer = ⊤ ↔ H.Normal :=
 #align subgroup.normalizer_eq_top Subgroup.normalizer_eq_top
 #align add_subgroup.normalizer_eq_top AddSubgroup.normalizer_eq_top
 
-@[to_additive]
-theorem center_le_normalizer : center G ≤ H.normalizer := fun x hx y => by
-  simp [← mem_center_iff.mp hx y, mul_assoc]
-#align subgroup.center_le_normalizer Subgroup.center_le_normalizer
-#align add_subgroup.center_le_normalizer AddSubgroup.center_le_normalizer
-
 open scoped Classical
 
 @[to_additive]
@@ -2290,74 +2203,6 @@ theorem NormalizerCondition.normal_of_coatom (hnc : NormalizerCondition G) (hmax
 
 end Normalizer
 
-section Centralizer
-
-variable {H}
-
-/-- The `centralizer` of `H` is the subgroup of `g : G` commuting with every `h : H`. -/
-@[to_additive
-      "The `centralizer` of `H` is the additive subgroup of `g : G` commuting with every `h : H`."]
-def centralizer (s : Set G) : Subgroup G :=
-  { Submonoid.centralizer s with
-    carrier := Set.centralizer s
-    inv_mem' := Set.inv_mem_centralizer }
-#align subgroup.centralizer Subgroup.centralizer
-#align add_subgroup.centralizer AddSubgroup.centralizer
-
-@[to_additive]
-theorem mem_centralizer_iff {g : G} {s : Set G} : g ∈ centralizer s ↔ ∀ h ∈ s, h * g = g * h :=
-  Iff.rfl
-#align subgroup.mem_centralizer_iff Subgroup.mem_centralizer_iff
-#align add_subgroup.mem_centralizer_iff AddSubgroup.mem_centralizer_iff
-
-@[to_additive]
-theorem mem_centralizer_iff_commutator_eq_one {g : G} {s : Set G} :
-    g ∈ centralizer s ↔ ∀ h ∈ s, h * g * h⁻¹ * g⁻¹ = 1 := by
-  simp only [mem_centralizer_iff, mul_inv_eq_iff_eq_mul, one_mul]
-#align subgroup.mem_centralizer_iff_commutator_eq_one Subgroup.mem_centralizer_iff_commutator_eq_one
-#align add_subgroup.mem_centralizer_iff_commutator_eq_zero AddSubgroup.mem_centralizer_iff_commutator_eq_zero
-
-@[to_additive]
-theorem centralizer_univ : centralizer Set.univ = center G :=
-  SetLike.ext' (Set.centralizer_univ G)
-#align subgroup.centralizer_univ Subgroup.centralizer_univ
-#align add_subgroup.centralizer_univ AddSubgroup.centralizer_univ
-
-@[to_additive]
-theorem le_centralizer_iff : H ≤ centralizer K ↔ K ≤ centralizer H :=
-  ⟨fun h x hx _y hy => (h hy x hx).symm, fun h x hx _y hy => (h hy x hx).symm⟩
-#align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
-#align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
-
-@[to_additive]
-theorem center_le_centralizer (s) : center G ≤ centralizer s :=
-  Set.center_subset_centralizer s
-#align subgroup.center_le_centralizer Subgroup.center_le_centralizer
-#align add_subgroup.center_le_centralizer AddSubgroup.center_le_centralizer
-
-@[to_additive]
-theorem centralizer_le {s t : Set G} (h : s ⊆ t) : centralizer t ≤ centralizer s :=
-  Submonoid.centralizer_le h
-#align subgroup.centralizer_le Subgroup.centralizer_le
-#align add_subgroup.centralizer_le AddSubgroup.centralizer_le
-
-@[to_additive (attr := simp)]
-theorem centralizer_eq_top_iff_subset {s : Set G} : centralizer s = ⊤ ↔ s ⊆ center G :=
-  SetLike.ext'_iff.trans Set.centralizer_eq_top_iff_subset
-#align subgroup.centralizer_eq_top_iff_subset Subgroup.centralizer_eq_top_iff_subset
-#align add_subgroup.centralizer_eq_top_iff_subset AddSubgroup.centralizer_eq_top_iff_subset
-
-@[to_additive]
-instance Centralizer.characteristic [hH : H.Characteristic] :
-    (centralizer (H : Set G)).Characteristic := by
-  refine' Subgroup.characteristic_iff_comap_le.mpr fun ϕ g hg h hh => ϕ.injective _
-  rw [map_mul, map_mul]
-  exact hg (ϕ h) (Subgroup.characteristic_iff_le_comap.mp hH ϕ hh)
-#align subgroup.subgroup.centralizer.characteristic Subgroup.Centralizer.characteristic
-#align add_subgroup.subgroup.centralizer.characteristic AddSubgroup.Centralizer.characteristic
-
-end Centralizer
-
 /-- Commutativity of a subgroup -/
 structure IsCommutative : Prop where
   /-- `*` is commutative on `H` -/
@@ -2383,10 +2228,6 @@ instance IsCommutative.commGroup [h : H.IsCommutative] : CommGroup H :=
 #align subgroup.is_commutative.comm_group Subgroup.IsCommutative.commGroup
 #align add_subgroup.is_commutative.add_comm_group AddSubgroup.IsCommutative.addCommGroup
 
-instance center.isCommutative : (center G).IsCommutative :=
-  ⟨⟨fun a b => Subtype.ext (b.2.comm a).symm⟩⟩
-#align subgroup.center.is_commutative Subgroup.center.isCommutative
-
 @[to_additive]
 instance map_isCommutative (f : G →* G') [H.IsCommutative] : (H.map f).IsCommutative :=
   ⟨⟨by
@@ -2414,19 +2255,6 @@ instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommuta
 #align subgroup.subgroup_of_is_commutative Subgroup.subgroupOf_isCommutative
 #align add_subgroup.add_subgroup_of_is_commutative AddSubgroup.addSubgroupOf_isCommutative
 
-@[to_additive]
-theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutative :=
-  ⟨fun h => ⟨⟨fun x y => Subtype.ext (h y.2 x x.2)⟩⟩,
-    fun h x hx y hy => congr_arg Subtype.val (h.1.1 ⟨y, hy⟩ ⟨x, hx⟩)⟩
-#align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutative
-#align add_subgroup.le_centralizer_iff_is_commutative AddSubgroup.le_centralizer_iff_isCommutative
-
-@[to_additive]
-theorem le_centralizer [h : H.IsCommutative] : H ≤ centralizer H :=
-  le_centralizer_iff_isCommutative.mpr h
-#align subgroup.le_centralizer Subgroup.le_centralizer
-#align add_subgroup.le_centralizer AddSubgroup.le_centralizer
-
 end Subgroup
 
 namespace Group
@@ -3784,16 +3612,6 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
   exact subset_normalClosure (Set.mem_singleton _)
 #align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_of
 
-variable {M : Type*} [Monoid M]
-
-theorem eq_of_left_mem_center {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M) : g = h := by
-  rcases H with ⟨u, hu⟩; rwa [← u.mul_left_inj, Hg.comm u]
-#align is_conj.eq_of_left_mem_center IsConj.eq_of_left_mem_center
-
-theorem eq_of_right_mem_center {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center M) : g = h :=
-  (H.symm.eq_of_left_mem_center Hh).symm
-#align is_conj.eq_of_right_mem_center IsConj.eq_of_right_mem_center
-
 end IsConj
 
 namespace ConjClasses
@@ -3805,27 +3623,7 @@ def noncenter (G : Type*) [Monoid G] : Set (ConjClasses G) :=
 @[simp] lemma mem_noncenter [Monoid G] (g : ConjClasses G) :
   g ∈ noncenter G ↔ g.carrier.Nontrivial := Iff.rfl
 
-theorem mk_bijOn (G : Type*) [Group G] :
-    Set.BijOn ConjClasses.mk (↑(Subgroup.center G)) (noncenter G)ᶜ := by
-  refine ⟨fun g hg ↦ ?_, fun x hx y _ H ↦ ?_, ?_⟩
-  · simp only [mem_noncenter, Set.compl_def, Set.mem_setOf, Set.not_nontrivial_iff]
-    intro x hx y hy
-    simp only [mem_carrier_iff_mk_eq, mk_eq_mk_iff_isConj] at hx hy
-    rw [hx.eq_of_right_mem_center hg, hy.eq_of_right_mem_center hg]
-  · rw [mk_eq_mk_iff_isConj] at H
-    exact H.eq_of_left_mem_center hx
-  · rintro ⟨g⟩ hg
-    refine ⟨g, ?_, rfl⟩
-    simp only [mem_noncenter, Set.compl_def, Set.mem_setOf, Set.not_nontrivial_iff] at hg
-    rw [SetLike.mem_coe, Subgroup.mem_center_iff]
-    intro h
-    rw [← mul_inv_eq_iff_eq_mul]
-    refine hg ?_ mem_carrier_mk
-    rw [mem_carrier_iff_mk_eq]
-    apply mk_eq_mk_iff_isConj.mpr
-    rw [isConj_comm, isConj_iff]
-    exact ⟨h, rfl⟩
-
 end ConjClasses
 
 assert_not_exists Multiset
+assert_not_exists Ring
chore: superfluous parentheses (#12116)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -2136,7 +2136,7 @@ def _root_.Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
       rw [eq_top_iff'] at h
       intro x y
       apply Subgroup.mem_center_iff.mp _ x
-      exact (h y)
+      exact h y
   }
 #align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTop
 
chore: remove more bex and ball from lemma names (#11615)

Follow-up to #10816.

Remaining places containing such lemmas are

  • Option.bex_ne_none and Option.ball_ne_none: defined in Lean core
  • Nat.decidableBallLT and Nat.decidableBallLE: defined in Lean core
  • bef_def is still used in a number of places and could be renamed
  • BAll.imp_{left,right}, BEx.imp_{left,right}, BEx.intro and BEx.elim

I only audited the first ~150 lemmas mentioning "ball"; too many lemmas named after Metric.ball/openBall/closedBall.

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

Diff
@@ -1402,8 +1402,7 @@ theorem coe_map (f : G →* N) (K : Subgroup G) : (K.map f : Set N) = f '' K :=
 #align add_subgroup.coe_map AddSubgroup.coe_map
 
 @[to_additive (attr := simp)]
-theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃ x ∈ K, f x = y := by
-  erw [mem_image_iff_bex]; simp
+theorem mem_map {f : G →* N} {K : Subgroup G} {y : N} : y ∈ K.map f ↔ ∃ x ∈ K, f x = y := Iff.rfl
 #align subgroup.mem_map Subgroup.mem_map
 #align add_subgroup.mem_map AddSubgroup.mem_map
 
style: replace '.-/' by '. -/' (#11938)

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

Diff
@@ -523,7 +523,7 @@ namespace Subgroup
 variable (H K : Subgroup G)
 
 /-- Copy of a subgroup with a new `carrier` equal to the old one. Useful to fix definitional
-equalities.-/
+equalities. -/
 @[to_additive
       "Copy of an additive subgroup with a new `carrier` equal to the old one.
       Useful to fix definitional equalities"]
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11801)
Diff
@@ -2277,7 +2277,7 @@ This may be easier to work with, as it avoids inequalities and negations.  -/
 theorem _root_.normalizerCondition_iff_only_full_group_self_normalizing :
     NormalizerCondition G ↔ ∀ H : Subgroup G, H.normalizer = H → H = ⊤ := by
   apply forall_congr'; intro H
-  simp only [lt_iff_le_and_ne, le_normalizer, true_and_iff, le_top, Ne.def]
+  simp only [lt_iff_le_and_ne, le_normalizer, true_and_iff, le_top, Ne]
   tauto
 #align normalizer_condition_iff_only_full_group_self_normalizing normalizerCondition_iff_only_full_group_self_normalizing
 
chore: handle comment nesting in lint-style.py (#10994)

This PR adjusts annotate_comments to respect comment nesting while linting.

Note that annotate_strings does not necessarily respect comment nesting, so this is an improvement, not a full fix. (Likewise, annotate_comments (still) doesn't ignore comment markers in strings.)

See Zulip.

Diff
@@ -1803,9 +1803,9 @@ variable {η : Type*} {f : η → Type*}
 /-- A version of `Set.pi` for submonoids. Given an index set `I` and a family of submodules
 `s : Π i, Submonoid f i`, `pi I s` is the submonoid of dependent functions `f : Π i, f i` such that
 `f i` belongs to `Pi I s` whenever `i ∈ I`. -/
-@[to_additive " A version of `Set.pi` for `AddSubmonoid`s. Given an index set `I` and a family
+@[to_additive "A version of `Set.pi` for `AddSubmonoid`s. Given an index set `I` and a family
   of submodules `s : Π i, AddSubmonoid f i`, `pi I s` is the `AddSubmonoid` of dependent functions
-  `f : Π i, f i` such that `f i` belongs to `pi I s` whenever `i ∈ I`. -/ "]
+  `f : Π i, f i` such that `f i` belongs to `pi I s` whenever `i ∈ I`."]
 def _root_.Submonoid.pi [∀ i, MulOneClass (f i)] (I : Set η) (s : ∀ i, Submonoid (f i)) :
     Submonoid (∀ i, f i) where
   carrier := I.pi fun i => (s i).carrier
@@ -1820,9 +1820,9 @@ variable [∀ i, Group (f i)]
 `s : Π i, Subgroup f i`, `pi I s` is the subgroup of dependent functions `f : Π i, f i` such that
 `f i` belongs to `pi I s` whenever `i ∈ I`. -/
 @[to_additive
-      " A version of `Set.pi` for `AddSubgroup`s. Given an index set `I` and a family
+      "A version of `Set.pi` for `AddSubgroup`s. Given an index set `I` and a family
       of submodules `s : Π i, AddSubgroup f i`, `pi I s` is the `AddSubgroup` of dependent functions
-      `f : Π i, f i` such that `f i` belongs to `pi I s` whenever `i ∈ I`. -/ "]
+      `f : Π i, f i` such that `f i` belongs to `pi I s` whenever `i ∈ I`."]
 def pi (I : Set η) (H : ∀ i, Subgroup (f i)) : Subgroup (∀ i, f i) :=
   { Submonoid.pi I fun i => (H i).toSubmonoid with
     inv_mem' := fun hp i hI => (H i).inv_mem (hp i hI) }
chore(GroupTheory): rename induction arguments for Sub{semigroup,monoid,group} (#11461)

The additive version are still incorrectly named, but these can easily be tracked down later (#11462) by searching for to_additive (attr := elab_as_elim).

Diff
@@ -1118,22 +1118,22 @@ of `k`. -/
       "An induction principle for additive closure membership. If `p`
       holds for `0` and all elements of `k`, and is preserved under addition and inverses, then `p`
       holds for all elements of the additive closure of `k`."]
-theorem closure_induction {p : G → Prop} {x} (h : x ∈ closure k) (Hk : ∀ x ∈ k, p x) (H1 : p 1)
-    (Hmul : ∀ x y, p x → p y → p (x * y)) (Hinv : ∀ x, p x → p x⁻¹) : p x :=
-  (@closure_le _ _ ⟨⟨⟨setOf p, fun {x y} ↦ Hmul x y⟩, H1⟩, fun {x} ↦ Hinv x⟩ k).2 Hk h
+theorem closure_induction {p : G → Prop} {x} (h : x ∈ closure k) (mem : ∀ x ∈ k, p x) (one : p 1)
+    (mul : ∀ x y, p x → p y → p (x * y)) (inv : ∀ x, p x → p x⁻¹) : p x :=
+  (@closure_le _ _ ⟨⟨⟨setOf p, fun {x y} ↦ mul x y⟩, one⟩, fun {x} ↦ inv x⟩ k).2 mem h
 #align subgroup.closure_induction Subgroup.closure_induction
 #align add_subgroup.closure_induction AddSubgroup.closure_induction
 
 /-- A dependent version of `Subgroup.closure_induction`.  -/
 @[to_additive (attr := elab_as_elim) "A dependent version of `AddSubgroup.closure_induction`. "]
 theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
-    (Hs : ∀ (x) (h : x ∈ k), p x (subset_closure h)) (H1 : p 1 (one_mem _))
-    (Hmul : ∀ x hx y hy, p x hx → p y hy → p (x * y) (mul_mem hx hy))
-    (Hinv : ∀ x hx, p x hx → p x⁻¹ (inv_mem hx)) {x} (hx : x ∈ closure k) : p x hx := by
+    (mem : ∀ (x) (h : x ∈ k), p x (subset_closure h)) (one : p 1 (one_mem _))
+    (mul : ∀ x hx y hy, p x hx → p y hy → p (x * y) (mul_mem hx hy))
+    (inv : ∀ x hx, p x hx → p x⁻¹ (inv_mem hx)) {x} (hx : x ∈ closure k) : p x hx := by
   refine' Exists.elim _ fun (hx : x ∈ closure k) (hc : p x hx) => hc
   exact
-    closure_induction hx (fun x hx => ⟨_, Hs x hx⟩) ⟨_, H1⟩
-      (fun x y ⟨hx', hx⟩ ⟨hy', hy⟩ => ⟨_, Hmul _ _ _ _ hx hy⟩) fun x ⟨hx', hx⟩ => ⟨_, Hinv _ _ hx⟩
+    closure_induction hx (fun x hx => ⟨_, mem x hx⟩) ⟨_, one⟩
+      (fun x y ⟨hx', hx⟩ ⟨hy', hy⟩ => ⟨_, mul _ _ _ _ hx hy⟩) fun x ⟨hx', hx⟩ => ⟨_, inv _ _ hx⟩
 #align subgroup.closure_induction' Subgroup.closure_induction'
 #align add_subgroup.closure_induction' AddSubgroup.closure_induction'
 
chore: Rename zpow_coe_nat to zpow_natCast (#11528)

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

Diff
@@ -147,7 +147,7 @@ theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
 @[to_additive (attr := aesop safe apply (rule_sets := [SetLike]))]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
   | (n : ℕ) => by
-    rw [zpow_coe_nat]
+    rw [zpow_natCast]
     exact pow_mem hx n
   | -[n+1] => by
     rw [zpow_negSucc]
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -88,7 +88,6 @@ open Function
 open Int
 
 variable {G G' G'' : Type*} [Group G] [Group G'] [Group G'']
-
 variable {A : Type*} [AddGroup A]
 
 section SubgroupClass
@@ -3335,7 +3334,6 @@ end Subgroup
 namespace MonoidHom
 
 variable {G₁ G₂ G₃ : Type*} [Group G₁] [Group G₂] [Group G₃]
-
 variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 
 /-- Auxiliary definition used to define `liftOfRightInverse` -/
chore: Remove ball and bex from lemma names (#10816)

ball for "bounded forall" and bex for "bounded exists" are from experience very confusing abbreviations. This PR renames them to forall_mem and exists_mem in the few Set lemma names that mention them.

Also deprecate ball_image_of_ball, mem_image_elim, mem_image_elim_on since those lemmas are duplicates of the renamed lemmas (apart from argument order and implicitness, which I am also fixing by making the binder in the RHS of forall_mem_image semi-implicit), have obscure names and are completely unused.

Diff
@@ -979,7 +979,7 @@ theorem mem_sInf {S : Set (Subgroup G)} {x : G} : x ∈ sInf S ↔ ∀ p ∈ S,
 
 @[to_additive]
 theorem mem_iInf {ι : Sort*} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
-  simp only [iInf, mem_sInf, Set.forall_range_iff]
+  simp only [iInf, mem_sInf, Set.forall_mem_range]
 #align subgroup.mem_infi Subgroup.mem_iInf
 #align add_subgroup.mem_infi AddSubgroup.mem_iInf
 
chore(Order): Make more arguments explicit (#11033)

Those lemmas have historically been very annoying to use in rw since all their arguments were implicit. One too many people complained about it on Zulip, so I'm changing them.

Downstream code broken by this change can fix it by adding appropriately many _s.

Also marks CauSeq.ext @[ext].

Order.BoundedOrder

  • top_sup_eq
  • sup_top_eq
  • bot_sup_eq
  • sup_bot_eq
  • top_inf_eq
  • inf_top_eq
  • bot_inf_eq
  • inf_bot_eq

Order.Lattice

  • sup_idem
  • sup_comm
  • sup_assoc
  • sup_left_idem
  • sup_right_idem
  • inf_idem
  • inf_comm
  • inf_assoc
  • inf_left_idem
  • inf_right_idem
  • sup_inf_left
  • sup_inf_right
  • inf_sup_left
  • inf_sup_right

Order.MinMax

  • max_min_distrib_left
  • max_min_distrib_right
  • min_max_distrib_left
  • min_max_distrib_right

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

Diff
@@ -1680,7 +1680,7 @@ theorem subgroupOf_inj {H₁ H₂ K : Subgroup G} :
 
 @[to_additive (attr := simp)]
 theorem inf_subgroupOf_right (H K : Subgroup G) : (H ⊓ K).subgroupOf K = H.subgroupOf K :=
-  subgroupOf_inj.2 inf_right_idem
+  subgroupOf_inj.2 (inf_right_idem _ _)
 #align subgroup.inf_subgroup_of_right Subgroup.inf_subgroupOf_right
 #align add_subgroup.inf_add_subgroup_of_right AddSubgroup.inf_addSubgroupOf_right
 
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -2225,7 +2225,7 @@ theorem center_le_normalizer : center G ≤ H.normalizer := fun x hx y => by
 #align subgroup.center_le_normalizer Subgroup.center_le_normalizer
 #align add_subgroup.center_le_normalizer AddSubgroup.center_le_normalizer
 
-open Classical
+open scoped Classical
 
 @[to_additive]
 theorem le_normalizer_of_normal [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) : K ≤ H.normalizer :=
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -164,7 +164,7 @@ theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H :=
 #align div_mem_comm_iff div_mem_comm_iff
 #align sub_mem_comm_iff sub_mem_comm_iff
 
-@[to_additive /-(attr := simp)-/] -- porting note: `simp` cannot simplify LHS
+@[to_additive /-(attr := simp)-/] -- Porting note: `simp` cannot simplify LHS
 theorem exists_inv_mem_iff_exists_mem {P : G → Prop} :
     (∃ x : G, x ∈ H ∧ P x⁻¹) ↔ ∃ x ∈ H, P x := by
   constructor <;>
@@ -532,7 +532,7 @@ protected def copy (K : Subgroup G) (s : Set G) (hs : s = K) : Subgroup G where
   carrier := s
   one_mem' := hs.symm ▸ K.one_mem'
   mul_mem' := hs.symm ▸ K.mul_mem'
-  inv_mem' hx := by simpa [hs] using hx -- porting note: `▸` didn't work here
+  inv_mem' hx := by simpa [hs] using hx -- Porting note: `▸` didn't work here
 #align subgroup.copy Subgroup.copy
 #align add_subgroup.copy AddSubgroup.copy
 
feat: , and ℚ≥0 are star-ordered rings (#10633)

Also golf the existing instance for and rename Rat.num_nonneg_iff_zero_le to Rat.num_nonneg, Rat.num_pos_iff_pos to Rat.num_pos.

From LeanAPAP

Diff
@@ -734,11 +734,10 @@ theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = (x : G) ^ n :=
 #align subgroup.coe_zpow Subgroup.coe_zpow
 #align add_subgroup.coe_zsmul AddSubgroup.coe_zsmul
 
-@[to_additive (attr := simp)]
-theorem mk_eq_one_iff {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 :=
-  show (⟨g, h⟩ : H) = (⟨1, H.one_mem⟩ : H) ↔ g = 1 by simp
-#align subgroup.mk_eq_one_iff Subgroup.mk_eq_one_iff
-#align add_subgroup.mk_eq_zero_iff AddSubgroup.mk_eq_zero_iff
+@[to_additive] -- This can be proved by `Submonoid.mk_eq_one`
+theorem mk_eq_one {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 := by simp
+#align subgroup.mk_eq_one_iff Subgroup.mk_eq_one
+#align add_subgroup.mk_eq_zero_iff AddSubgroup.mk_eq_zero
 
 /-- A subgroup of a group inherits a group structure. -/
 @[to_additive "An `AddSubgroup` of an `AddGroup` inherits an `AddGroup` structure."]
@@ -938,7 +937,7 @@ theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (
 @[to_additive]
 lemma ne_bot_iff_exists_ne_one {H : Subgroup G} : H ≠ ⊥ ↔ ∃ a : ↥H, a ≠ 1 := by
   rw [← nontrivial_iff_ne_bot, nontrivial_iff_exists_ne_one]
-  simp only [ne_eq, Subtype.exists, mk_eq_one_iff, exists_prop]
+  simp only [ne_eq, Subtype.exists, mk_eq_one, exists_prop]
 
 /-- The inf of two subgroups is their intersection. -/
 @[to_additive "The inf of two `AddSubgroup`s is their intersection."]
fix: correct statement of zpow_ofNat and ofNat_zsmul (#10969)

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

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

Diff
@@ -148,7 +148,7 @@ theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
 @[to_additive (attr := aesop safe apply (rule_sets := [SetLike]))]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
   | (n : ℕ) => by
-    rw [zpow_ofNat]
+    rw [zpow_coe_nat]
     exact pow_mem hx n
   | -[n+1] => by
     rw [zpow_negSucc]
chore: bump aesop; update syntax (#10955)

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

Diff
@@ -122,7 +122,7 @@ class AddSubgroupClass (S G : Type*) [SubNegMonoid G] [SetLike S G] extends AddS
 
 attribute [to_additive] InvMemClass SubgroupClass
 
-attribute [aesop safe apply (rule_sets [SetLike])] inv_mem neg_mem
+attribute [aesop safe apply (rule_sets := [SetLike])] inv_mem neg_mem
 
 @[to_additive (attr := simp)]
 theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G] {H : S}
@@ -138,14 +138,14 @@ theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G]
 variable {M S : Type*} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
 
 /-- A subgroup is closed under division. -/
-@[to_additive (attr := aesop safe apply (rule_sets [SetLike]))
+@[to_additive (attr := aesop safe apply (rule_sets := [SetLike]))
   "An additive subgroup is closed under subtraction."]
 theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
   rw [div_eq_mul_inv]; exact mul_mem hx (inv_mem hy)
 #align div_mem div_mem
 #align sub_mem sub_mem
 
-@[to_additive (attr := aesop safe apply (rule_sets [SetLike]))]
+@[to_additive (attr := aesop safe apply (rule_sets := [SetLike]))]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
   | (n : ℕ) => by
     rw [zpow_ofNat]
@@ -1085,7 +1085,7 @@ theorem mem_closure {x : G} : x ∈ closure k ↔ ∀ K : Subgroup G, k ⊆ K 
 #align add_subgroup.mem_closure AddSubgroup.mem_closure
 
 /-- The subgroup generated by a set includes the set. -/
-@[to_additive (attr := simp, aesop safe 20 apply (rule_sets [SetLike]))
+@[to_additive (attr := simp, aesop safe 20 apply (rule_sets := [SetLike]))
   "The `AddSubgroup` generated by a set includes the set."]
 theorem subset_closure : k ⊆ closure k := fun _ hx => mem_closure.2 fun _ hK => hK hx
 #align subgroup.subset_closure Subgroup.subset_closure
chore: split Ordered instances for subobjects into separate files (#10900)

Moving these to separate files should make typeclass synthesis less expensive. Additionally two of them are quite long and this shrinks them slightly.

This handles:

  • Submonoid
  • Subgroup
  • Subsemiring
  • Subring
  • Subfield
  • Submodule
  • Subalgebra

This also moves Units.posSubgroup into its own file.

The copyright headers are from:

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

Diff
@@ -5,7 +5,6 @@ Authors: Kexing Ying
 -/
 import Mathlib.Algebra.Group.Conj
 import Mathlib.Algebra.Group.Pi.Lemmas
-import Mathlib.Algebra.Order.Group.InjSurj
 import Mathlib.Data.Set.Image
 import Mathlib.GroupTheory.Submonoid.Centralizer
 import Mathlib.Order.Atoms
@@ -269,28 +268,6 @@ instance (priority := 75) toCommGroup {G : Type*} [CommGroup G] [SetLike S G] [S
 #align subgroup_class.to_comm_group SubgroupClass.toCommGroup
 #align add_subgroup_class.to_add_comm_group AddSubgroupClass.toAddCommGroup
 
--- Prefer subclasses of `Group` over subclasses of `SubgroupClass`.
-/-- A subgroup of an `OrderedCommGroup` is an `OrderedCommGroup`. -/
-@[to_additive "An additive subgroup of an `AddOrderedCommGroup` is an `AddOrderedCommGroup`."]
-instance (priority := 75) toOrderedCommGroup {G : Type*} [OrderedCommGroup G] [SetLike S G]
-    [SubgroupClass S G] : OrderedCommGroup H :=
-  Subtype.coe_injective.orderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
-    (fun _ _ => rfl) fun _ _ => rfl
-#align subgroup_class.to_ordered_comm_group SubgroupClass.toOrderedCommGroup
-#align add_subgroup_class.to_ordered_add_comm_group AddSubgroupClass.toOrderedAddCommGroup
-
--- Prefer subclasses of `Group` over subclasses of `SubgroupClass`.
-/-- A subgroup of a `LinearOrderedCommGroup` is a `LinearOrderedCommGroup`. -/
-@[to_additive
-      "An additive subgroup of a `LinearOrderedAddCommGroup` is a
-        `LinearOrderedAddCommGroup`."]
-instance (priority := 75) toLinearOrderedCommGroup {G : Type*} [LinearOrderedCommGroup G]
-    [SetLike S G] [SubgroupClass S G] : LinearOrderedCommGroup H :=
-  Subtype.coe_injective.linearOrderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl)
-    (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
-#align subgroup_class.to_linear_ordered_comm_group SubgroupClass.toLinearOrderedCommGroup
-#align add_subgroup_class.to_linear_ordered_add_comm_group AddSubgroupClass.toLinearOrderedAddCommGroup
-
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive (attr := coe)
   "The natural group hom from an additive subgroup of `AddGroup` `G` to `G`."]
@@ -779,26 +756,6 @@ instance toCommGroup {G : Type*} [CommGroup G] (H : Subgroup G) : CommGroup H :=
 #align subgroup.to_comm_group Subgroup.toCommGroup
 #align add_subgroup.to_add_comm_group AddSubgroup.toAddCommGroup
 
-/-- A subgroup of an `OrderedCommGroup` is an `OrderedCommGroup`. -/
-@[to_additive "An `AddSubgroup` of an `AddOrderedCommGroup` is an `AddOrderedCommGroup`."]
-instance toOrderedCommGroup {G : Type*} [OrderedCommGroup G] (H : Subgroup G) :
-    OrderedCommGroup H :=
-  Subtype.coe_injective.orderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
-    (fun _ _ => rfl) fun _ _ => rfl
-#align subgroup.to_ordered_comm_group Subgroup.toOrderedCommGroup
-#align add_subgroup.to_ordered_add_comm_group AddSubgroup.toOrderedAddCommGroup
-
-/-- A subgroup of a `LinearOrderedCommGroup` is a `LinearOrderedCommGroup`. -/
-@[to_additive
-      "An `AddSubgroup` of a `LinearOrderedAddCommGroup` is a
-        `LinearOrderedAddCommGroup`."]
-instance toLinearOrderedCommGroup {G : Type*} [LinearOrderedCommGroup G] (H : Subgroup G) :
-    LinearOrderedCommGroup H :=
-  Subtype.coe_injective.linearOrderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl)
-    (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
-#align subgroup.to_linear_ordered_comm_group Subgroup.toLinearOrderedCommGroup
-#align add_subgroup.to_linear_ordered_add_comm_group AddSubgroup.toLinearOrderedAddCommGroup
-
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an `AddSubgroup` of `AddGroup` `G` to `G`."]
 protected def subtype : H →* G where
chore: remove terminal, terminal refines (#10762)

I replaced a few "terminal" refine/refine's with exact.

The strategy was very simple-minded: essentially any refine whose following line had smaller indentation got replaced by exact and then I cleaned up the mess.

This PR certainly leaves some further terminal refines, but maybe the current change is beneficial.

Diff
@@ -1917,7 +1917,7 @@ theorem le_pi_iff {I : Set η} {H : ∀ i, Subgroup (f i)} {J : Subgroup (∀ i,
     rintro _ ⟨x, hx, rfl⟩
     exact (h hx) _ hi
   · intro h x hx i hi
-    refine' h i hi ⟨_, hx, rfl⟩
+    exact h i hi ⟨_, hx, rfl⟩
 #align subgroup.le_pi_iff Subgroup.le_pi_iff
 #align add_subgroup.le_pi_iff AddSubgroup.le_pi_iff
 
chore: classify dsimp can prove this porting notes (#10686)

Classifies by adding issue number (#10685) to porting notes claiming dsimp can prove this.

Diff
@@ -751,7 +751,7 @@ theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = (x : G) ^ n :=
 #align subgroup.coe_pow Subgroup.coe_pow
 #align add_subgroup.coe_nsmul AddSubgroup.coe_nsmul
 
-@[to_additive (attr := norm_cast)] -- Porting note: dsimp can prove this
+@[to_additive (attr := norm_cast)] -- Porting note (#10685): dsimp can prove this
 theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = (x : G) ^ n :=
   rfl
 #align subgroup.coe_zpow Subgroup.coe_zpow
chore: classify dsimp cannot prove this porting notes (#10676)

Classifies by adding issue number (#10675) to porting notes claiming dsimp cannot prove this.

Diff
@@ -416,7 +416,7 @@ instance : SubgroupClass (Subgroup G) G where
   one_mem _ := (Subgroup.toSubmonoid _).one_mem'
   mul_mem := (Subgroup.toSubmonoid _).mul_mem'
 
-@[to_additive (attr := simp, nolint simpNF)] -- Porting note: dsimp can not prove this
+@[to_additive (attr := simp, nolint simpNF)] -- Porting note (#10675): dsimp can not prove this
 theorem mem_carrier {s : Subgroup G} {x : G} : x ∈ s.carrier ↔ x ∈ s :=
   Iff.rfl
 #align subgroup.mem_carrier Subgroup.mem_carrier
chore: classify simp can do this porting notes (#10619)

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

Diff
@@ -2584,7 +2584,7 @@ theorem normalClosure_eq_self (H : Subgroup G) [H.Normal] : normalClosure ↑H =
   le_antisymm (normalClosure_le_normal rfl.subset) le_normalClosure
 #align subgroup.normal_closure_eq_self Subgroup.normalClosure_eq_self
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 theorem normalClosure_idempotent : normalClosure ↑(normalClosure s) = normalClosure s :=
   normalClosure_eq_self _
 #align subgroup.normal_closure_idempotent Subgroup.normalClosure_idempotent
@@ -2640,7 +2640,7 @@ theorem normalCore_eq_self (H : Subgroup G) [H.Normal] : H.normalCore = H :=
   le_antisymm H.normalCore_le (normal_le_normalCore.mpr le_rfl)
 #align subgroup.normal_core_eq_self Subgroup.normalCore_eq_self
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 theorem normalCore_idempotent (H : Subgroup G) : H.normalCore.normalCore = H.normalCore :=
   H.normalCore.normalCore_eq_self
 #align subgroup.normal_core_idempotent Subgroup.normalCore_idempotent
move: Algebraic pi instances (#10693)

Rename

  • Data.Pi.Algebra to Algebra.Group.Pi.Basic
  • Algebra.Group.Pi to Algebra.Group.Pi.Lemmas

Move a few instances from the latter to the former, the goal being that Algebra.Group.Pi.Basic is about all the pi instances of the classes defined in Algebra.Group.Defs. Algebra.Group.Pi.Lemmas will need further rearranging.

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 -/
 import Mathlib.Algebra.Group.Conj
+import Mathlib.Algebra.Group.Pi.Lemmas
 import Mathlib.Algebra.Order.Group.InjSurj
 import Mathlib.Data.Set.Image
 import Mathlib.GroupTheory.Submonoid.Centralizer
refactor: prefer s ∩ . when passing to a subset of s (#10433)

This is partial work to make s ∩ . be consistently used for passing to a subset of s. This is sort of an adjoint to (Subtype.val : s -> _) '' ., except for the fact that it does not produce a Set s.

The main API changes are to Subtype.image_preimage_val and Subtype.preimage_val_eq_preimage_val_iff in Mathlib.Data.Set.Image. Changes in other modules are all proof fixups.

Zulip discussion

Diff
@@ -1677,9 +1677,10 @@ theorem mem_subgroupOf {H K : Subgroup G} {h : K} : h ∈ H.subgroupOf K ↔ (h
 #align subgroup.mem_subgroup_of Subgroup.mem_subgroupOf
 #align add_subgroup.mem_add_subgroup_of AddSubgroup.mem_addSubgroupOf
 
+-- TODO(kmill): use `K ⊓ H` order for RHS to match `Subtype.image_preimage_coe`
 @[to_additive (attr := simp)]
 theorem subgroupOf_map_subtype (H K : Subgroup G) : (H.subgroupOf K).map K.subtype = H ⊓ K :=
-  SetLike.ext' <| Subtype.image_preimage_coe _ _
+  SetLike.ext' <| by refine Subtype.image_preimage_coe _ _ |>.trans ?_; apply Set.inter_comm
 #align subgroup.subgroup_of_map_subtype Subgroup.subgroupOf_map_subtype
 #align add_subgroup.add_subgroup_of_map_subtype AddSubgroup.addSubgroupOf_map_subtype
 
chore: move to v4.6.0-rc1, merging adaptations from bump/v4.6.0 (#10176)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>

Diff
@@ -2405,7 +2405,7 @@ end Centralizer
 /-- Commutativity of a subgroup -/
 structure IsCommutative : Prop where
   /-- `*` is commutative on `H` -/
-  is_comm : IsCommutative H (· * ·)
+  is_comm : Std.Commutative (α := H) (· * ·)
 #align subgroup.is_commutative Subgroup.IsCommutative
 
 attribute [class] IsCommutative
@@ -2413,7 +2413,7 @@ attribute [class] IsCommutative
 /-- Commutativity of an additive subgroup -/
 structure _root_.AddSubgroup.IsCommutative (H : AddSubgroup A) : Prop where
   /-- `+` is commutative on `H` -/
-  is_comm : _root_.IsCommutative H (· + ·)
+  is_comm : Std.Commutative (α := H) (· + ·)
 #align add_subgroup.is_commutative AddSubgroup.IsCommutative
 
 attribute [to_additive] Subgroup.IsCommutative
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -4,11 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 -/
 import Mathlib.Algebra.Group.Conj
-import Mathlib.Algebra.Module.Basic
 import Mathlib.Algebra.Order.Group.InjSurj
-import Mathlib.Data.Countable.Basic
+import Mathlib.Data.Set.Image
 import Mathlib.GroupTheory.Submonoid.Centralizer
-import Mathlib.Logic.Encodable.Basic
 import Mathlib.Order.Atoms
 import Mathlib.Tactic.ApplyFun
 
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
@@ -2970,7 +2970,7 @@ theorem ker_prodMap {G' : Type*} {N' : Type*} [Group G'] [Group N'] (f : G →*
 
 @[to_additive]
 theorem range_le_ker_iff (f : G →* G') (g : G' →* G'') : f.range ≤ g.ker ↔ g.comp f = 1 :=
-  ⟨fun h => ext fun x => h ⟨x, rfl⟩, by rintro h _ ⟨y, rfl⟩; exact FunLike.congr_fun h y⟩
+  ⟨fun h => ext fun x => h ⟨x, rfl⟩, by rintro h _ ⟨y, rfl⟩; exact DFunLike.congr_fun h y⟩
 
 @[to_additive]
 instance (priority := 100) normal_ker (f : G →* M) : f.ker.Normal :=
chore: replace SubgroupClass.inv by InvMemClass.inv (#9761)
Diff
@@ -187,8 +187,29 @@ theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
 #align mul_mem_cancel_left mul_mem_cancel_left
 #align add_mem_cancel_left add_mem_cancel_left
 
+namespace InvMemClass
+
+/-- A subgroup of a group inherits an inverse. -/
+@[to_additive "An additive subgroup of an `AddGroup` inherits an inverse."]
+instance inv {G : Type u_1} {S : Type u_2} [Inv G] [SetLike S G]
+  [InvMemClass S G] {H : S} : Inv H :=
+  ⟨fun a => ⟨a⁻¹, inv_mem a.2⟩⟩
+#align subgroup_class.has_inv InvMemClass.inv
+#align add_subgroup_class.has_neg NegMemClass.neg
+
+@[to_additive (attr := simp, norm_cast)]
+theorem coe_inv (x : H) : (x⁻¹).1 = x.1⁻¹ :=
+  rfl
+#align subgroup_class.coe_inv InvMemClass.coe_inv
+#align add_subgroup_class.coe_neg NegMemClass.coe_neg
+
+end InvMemClass
+
 namespace SubgroupClass
 
+-- deprecated since 15 January 2024
+@[to_additive (attr := deprecated)] alias coe_inv := InvMemClass.coe_inv
+
 -- Here we assume H, K, and L are subgroups, but in fact any one of them
 -- could be allowed to be a subsemigroup.
 -- Counterexample where K and L are submonoids: H = ℤ, K = ℕ, L = -ℕ
@@ -201,14 +222,6 @@ theorem subset_union {H K L : S} : (H : Set G) ⊆ K ∪ L ↔ H ≤ K ∨ H ≤
     ((h yH).resolve_left fun yK ↦ xK <| (mul_mem_cancel_right yK).mp ·)
     (mul_mem_cancel_left <| (h xH).resolve_left xK).mp
 
-/-- A subgroup of a group inherits an inverse. -/
-@[to_additive "An additive subgroup of an `AddGroup` inherits an inverse."]
-instance inv {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
-  [SubgroupClass S G] {H : S} : Inv H :=
-  ⟨fun a => ⟨a⁻¹, inv_mem a.2⟩⟩
-#align subgroup_class.has_inv SubgroupClass.inv
-#align add_subgroup_class.has_neg AddSubgroupClass.neg
-
 /-- A subgroup of a group inherits a division -/
 @[to_additive "An additive subgroup of an `AddGroup` inherits a subtraction."]
 instance div {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
@@ -230,12 +243,6 @@ instance zpow {M S} [DivInvMonoid M] [SetLike S M] [SubgroupClass S M] {H : S} :
 #align subgroup_class.has_zpow SubgroupClass.zpow
 -- Porting note: additive align statement is given above
 
-@[to_additive (attr := simp, norm_cast)]
-theorem coe_inv (x : H) : (x⁻¹).1 = x.1⁻¹ :=
-  rfl
-#align subgroup_class.coe_inv SubgroupClass.coe_inv
-#align add_subgroup_class.coe_neg AddSubgroupClass.coe_neg
-
 @[to_additive (attr := simp, norm_cast)]
 theorem coe_div (x y : H) : (x / y).1 = x.1 / y.1 :=
   rfl
refactor: Multiplicativise abs (#9553)

The current design for abs is flawed:

  • The Abs notation typeclass has exactly two instances: one for [Neg α] [Sup α], one for [Inv α] [Sup α]. This means that:
    • We can't write a meaningful hover for Abs.abs
    • Fields have two Abs instances!
  • We have the multiplicative definition but:
    • All the lemmas in Algebra.Order.Group.Abs are about the additive version.
    • The only lemmas about the multiplicative version are in Algebra.Order.Group.PosPart, and they get additivised to duplicates of the lemmas in Algebra.Order.Group.Abs!

This PR changes the notation typeclass with two new definitions (related through to_additive): mabs and abs. abs inherits the |a| notation and mabs gets |a|ₘ instead.

The first half of Algebra.Order.Group.Abs gets multiplicativised. A later PR will multiplicativise the second half, and another one will deduplicate the lemmas in Algebra.Order.Group.PosPart.

Part of #9411.

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>

Diff
@@ -133,7 +133,7 @@ theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G]
 #align inv_mem_iff inv_mem_iff
 #align neg_mem_iff neg_mem_iff
 
-@[simp] theorem abs_mem_iff {S G} [InvolutiveNeg G] [LinearOrder G] {_ : SetLike S G}
+@[simp] theorem abs_mem_iff {S G} [AddGroup G] [LinearOrder G] {_ : SetLike S G}
     [NegMemClass S G] {H : S} {x : G} : |x| ∈ H ↔ x ∈ H := by
   cases abs_choice x <;> simp [*]
 
chore(*): replace $ with <| (#9319)

See Zulip thread for the discussion.

Diff
@@ -1286,7 +1286,7 @@ theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, c
 #align add_subgroup.closure_Union AddSubgroup.closure_iUnion
 
 @[to_additive (attr := simp)]
-theorem closure_eq_bot_iff : closure k = ⊥ ↔ k ⊆ {1} := le_bot_iff.symm.trans $ closure_le _
+theorem closure_eq_bot_iff : closure k = ⊥ ↔ k ⊆ {1} := le_bot_iff.symm.trans <| closure_le _
 #align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iff
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
 
@@ -3213,7 +3213,7 @@ theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {
 @[to_additive (attr := simp)]
 theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
     H.map G'.subtype ≤ K.map G'.subtype ↔ H ≤ K :=
-  map_le_map_iff_of_injective $ by apply Subtype.coe_injective
+  map_le_map_iff_of_injective <| by apply Subtype.coe_injective
 #align subgroup.map_subtype_le_map_subtype Subgroup.map_subtype_le_map_subtype
 #align add_subgroup.map_subtype_le_map_subtype AddSubgroup.map_subtype_le_map_subtype
 
@@ -3697,7 +3697,7 @@ instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.N
 theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
     [hN : (B'.subgroupOf B).Normal] : ((A ⊓ B').subgroupOf (A ⊓ B)).Normal :=
   { conj_mem := fun {n} hn g =>
-      ⟨mul_mem (mul_mem (mem_inf.1 g.2).1 (mem_inf.1 n.2).1) $
+      ⟨mul_mem (mul_mem (mem_inf.1 g.2).1 (mem_inf.1 n.2).1) <|
         show ↑g⁻¹ ∈ A from (inv_mem (mem_inf.1 g.2).1),
         (normal_subgroupOf_iff hB).mp hN n g hn.2 (mem_inf.mp g.2).2⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_right
@@ -3708,7 +3708,7 @@ theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (
     [hN : (A'.subgroupOf A).Normal] : ((A' ⊓ B).subgroupOf (A ⊓ B)).Normal :=
   { conj_mem := fun n hn g =>
       ⟨(normal_subgroupOf_iff hA).mp hN n g hn.1 (mem_inf.mp g.2).1,
-        mul_mem (mul_mem (mem_inf.1 g.2).2 (mem_inf.1 n.2).2) $
+        mul_mem (mul_mem (mem_inf.1 g.2).2 (mem_inf.1 n.2).2) <|
         show ↑g⁻¹ ∈ B from (inv_mem (mem_inf.1 g.2).2)⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_left
 #align add_subgroup.inf_add_subgroup_of_inf_normal_of_left AddSubgroup.inf_addSubgroupOf_inf_normal_of_left
feat: Prove isomorphism implies equality of normal closure subgroups (#9185)

feat: Prove isomorphism implies equality of normal closure subgroups

Co-authored-by: Riccardo Brasca riccardo.brasca@gmail.com

Co-authored-by: Newell Jensen <newell@users.noreply.github.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -1502,18 +1502,28 @@ theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup
 #align add_subgroup.mem_map_iff_mem AddSubgroup.mem_map_iff_mem
 
 @[to_additive]
-theorem map_equiv_eq_comap_symm (f : G ≃* N) (K : Subgroup G) :
+theorem map_equiv_eq_comap_symm' (f : G ≃* N) (K : Subgroup G) :
     K.map f.toMonoidHom = K.comap f.symm.toMonoidHom :=
   SetLike.coe_injective (f.toEquiv.image_eq_preimage K)
-#align subgroup.map_equiv_eq_comap_symm Subgroup.map_equiv_eq_comap_symm
-#align add_subgroup.map_equiv_eq_comap_symm AddSubgroup.map_equiv_eq_comap_symm
+#align subgroup.map_equiv_eq_comap_symm Subgroup.map_equiv_eq_comap_symm'
+#align add_subgroup.map_equiv_eq_comap_symm AddSubgroup.map_equiv_eq_comap_symm'
+
+@[to_additive]
+theorem map_equiv_eq_comap_symm (f : G ≃* N) (K : Subgroup G) :
+    K.map f = K.comap (G := N) f.symm :=
+  map_equiv_eq_comap_symm' _ _
 
 @[to_additive]
 theorem comap_equiv_eq_map_symm (f : N ≃* G) (K : Subgroup G) :
+    K.comap (G := N) f = K.map f.symm :=
+  (map_equiv_eq_comap_symm f.symm K).symm
+
+@[to_additive]
+theorem comap_equiv_eq_map_symm' (f : N ≃* G) (K : Subgroup G) :
     K.comap f.toMonoidHom = K.map f.symm.toMonoidHom :=
   (map_equiv_eq_comap_symm f.symm K).symm
-#align subgroup.comap_equiv_eq_map_symm Subgroup.comap_equiv_eq_map_symm
-#align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm
+#align subgroup.comap_equiv_eq_map_symm Subgroup.comap_equiv_eq_map_symm'
+#align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm'
 
 @[to_additive]
 theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} :
@@ -2054,21 +2064,21 @@ theorem characteristic_iff_le_comap : H.Characteristic ↔ ∀ ϕ : G ≃* G, H
 
 @[to_additive]
 theorem characteristic_iff_map_eq : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.map ϕ.toMonoidHom = H := by
-  simp_rw [map_equiv_eq_comap_symm]
+  simp_rw [map_equiv_eq_comap_symm']
   exact characteristic_iff_comap_eq.trans ⟨fun h ϕ => h ϕ.symm, fun h ϕ => h ϕ.symm⟩
 #align subgroup.characteristic_iff_map_eq Subgroup.characteristic_iff_map_eq
 #align add_subgroup.characteristic_iff_map_eq AddSubgroup.characteristic_iff_map_eq
 
 @[to_additive]
 theorem characteristic_iff_map_le : H.Characteristic ↔ ∀ ϕ : G ≃* G, H.map ϕ.toMonoidHom ≤ H := by
-  simp_rw [map_equiv_eq_comap_symm]
+  simp_rw [map_equiv_eq_comap_symm']
   exact characteristic_iff_comap_le.trans ⟨fun h ϕ => h ϕ.symm, fun h ϕ => h ϕ.symm⟩
 #align subgroup.characteristic_iff_map_le Subgroup.characteristic_iff_map_le
 #align add_subgroup.characteristic_iff_map_le AddSubgroup.characteristic_iff_map_le
 
 @[to_additive]
 theorem characteristic_iff_le_map : H.Characteristic ↔ ∀ ϕ : G ≃* G, H ≤ H.map ϕ.toMonoidHom := by
-  simp_rw [map_equiv_eq_comap_symm]
+  simp_rw [map_equiv_eq_comap_symm']
   exact characteristic_iff_le_comap.trans ⟨fun h ϕ => h ϕ.symm, fun h ϕ => h ϕ.symm⟩
 #align subgroup.characteristic_iff_le_map Subgroup.characteristic_iff_le_map
 #align add_subgroup.characteristic_iff_le_map AddSubgroup.characteristic_iff_le_map
@@ -3506,6 +3516,19 @@ instance (priority := 100) Subgroup.normal_subgroupOf {H N : Subgroup G} [N.Norm
 #align subgroup.normal_subgroup_of Subgroup.normal_subgroupOf
 #align add_subgroup.normal_add_subgroup_of AddSubgroup.normal_addSubgroupOf
 
+theorem Subgroup.map_normalClosure (s : Set G) (f : G →* N) (hf : Surjective f) :
+    (normalClosure s).map f = normalClosure (f '' s) := by
+  have : Normal (map f (normalClosure s)) := Normal.map inferInstance f hf
+  apply le_antisymm
+  · simp [map_le_iff_le_comap, normalClosure_le_normal, coe_comap,
+      ← Set.image_subset_iff, subset_normalClosure]
+  · exact normalClosure_le_normal (Set.image_subset f subset_normalClosure)
+
+theorem Subgroup.comap_normalClosure (s : Set N) (f : G ≃* N) :
+    normalClosure (f ⁻¹' s) = (normalClosure s).comap f := by
+  have := Set.preimage_equiv_eq_image_symm s f.toEquiv
+  simp_all [comap_equiv_eq_map_symm, map_normalClosure s f.symm f.symm.surjective]
+
 namespace MonoidHom
 
 /-- The `MonoidHom` from the preimage of a subgroup to itself. -/
feat: Kummer extensions are cyclic. (#9119)

Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>

Diff
@@ -3550,6 +3550,14 @@ def subgroupCongr (h : H = K) : H ≃* K :=
 #align mul_equiv.subgroup_congr MulEquiv.subgroupCongr
 #align add_equiv.add_subgroup_congr AddEquiv.addSubgroupCongr
 
+@[to_additive (attr := simp)]
+lemma subgroupCongr_apply (h : H = K) (x) :
+    (MulEquiv.subgroupCongr h x : G) = x := rfl
+
+@[to_additive (attr := simp)]
+lemma subgroupCongr_symm_apply (h : H = K) (x) :
+    ((MulEquiv.subgroupCongr h).symm x : G) = x := rfl
+
 /-- A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
 use `Subgroup.equiv_map_of_injective`. -/
 @[to_additive
chore(*): use ∃ x ∈ s, _ instead of ∃ (x) (_ : x ∈ s), _ (#9184)

Search for [∀∃].*(_ and manually replace some occurrences with more readable versions. In case of , the new expressions are defeq to the old ones. In case of , they differ by exists_prop.

In some rare cases, golf proofs that needed fixing.

Diff
@@ -645,7 +645,7 @@ protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K :=
 
 /-- Construct a subgroup from a nonempty set that is closed under division. -/
 @[to_additive "Construct a subgroup from a nonempty set that is closed under subtraction"]
-def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ (x) (_ : x ∈ s) (y) (_ : y ∈ s), x * y⁻¹ ∈ s) :
+def ofDiv (s : Set G) (hsn : s.Nonempty) (hs : ∀ᵉ (x ∈ s) (y ∈ s), x * y⁻¹ ∈ s) :
     Subgroup G :=
   have one_mem : (1 : G) ∈ s := by
     let ⟨x, hx⟩ := hsn
chore(Ideal/Operations): remove extraneous nonempty conditions (#9115)

Also generalizes Ideal.subset_union to Subgroup.

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -177,22 +177,30 @@ theorem exists_inv_mem_iff_exists_mem {P : G → Prop} :
 
 @[to_additive]
 theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :=
-  -- Porting note: whut? why do we need this?
-  haveI : SubmonoidClass S G := SubgroupClass.toSubmonoidClass
   ⟨fun hba => by simpa using mul_mem hba (inv_mem h), fun hb => mul_mem hb h⟩
 #align mul_mem_cancel_right mul_mem_cancel_right
 #align add_mem_cancel_right add_mem_cancel_right
 
 @[to_additive]
 theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
-  -- Porting note: whut? why do we need this?
-  have : SubmonoidClass S G := SubgroupClass.toSubmonoidClass
   ⟨fun hab => by simpa using mul_mem (inv_mem h) hab, mul_mem h⟩
 #align mul_mem_cancel_left mul_mem_cancel_left
 #align add_mem_cancel_left add_mem_cancel_left
 
 namespace SubgroupClass
 
+-- Here we assume H, K, and L are subgroups, but in fact any one of them
+-- could be allowed to be a subsemigroup.
+-- Counterexample where K and L are submonoids: H = ℤ, K = ℕ, L = -ℕ
+-- Counterexample where H and K are submonoids: H = {n | n = 0 ∨ 3 ≤ n}, K = 3ℕ + 4ℕ, L = 5ℤ
+@[to_additive]
+theorem subset_union {H K L : S} : (H : Set G) ⊆ K ∪ L ↔ H ≤ K ∨ H ≤ L := by
+  refine ⟨fun h ↦ ?_, fun h x xH ↦ h.imp (· xH) (· xH)⟩
+  rw [or_iff_not_imp_left, SetLike.not_le_iff_exists]
+  exact fun ⟨x, xH, xK⟩ y yH ↦ (h <| mul_mem xH yH).elim
+    ((h yH).resolve_left fun yK ↦ xK <| (mul_mem_cancel_right yK).mp ·)
+    (mul_mem_cancel_left <| (h xH).resolve_left xK).mp
+
 /-- A subgroup of a group inherits an inverse. -/
 @[to_additive "An additive subgroup of an `AddGroup` inherits an inverse."]
 instance inv {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
chore: tidy various files (#8880)
Diff
@@ -2317,7 +2317,7 @@ variable {H}
 
 /-- The `centralizer` of `H` is the subgroup of `g : G` commuting with every `h : H`. -/
 @[to_additive
-      "The `centralizer` of `H` is the additive subgroup of `g : G` commuting with\nevery `h : H`."]
+      "The `centralizer` of `H` is the additive subgroup of `g : G` commuting with every `h : H`."]
 def centralizer (s : Set G) : Subgroup G :=
   { Submonoid.centralizer s with
     carrier := Set.centralizer s
fix(Tactic/ToAdditive): handle AddCommute and AddSemiconjBy correctly (#8757)

This removes the need for many manual overrides, and corrects some bad names.

We have to make sure to leave function_commute and function_semiconjBy untouched.

Diff
@@ -3717,7 +3717,7 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
     apply H₂.mul_mem _ (H₂.inv_mem hy)
     apply hH₂.conj_mem _ hy
 #align subgroup.commute_of_normal_of_disjoint Subgroup.commute_of_normal_of_disjoint
-#align add_subgroup.commute_of_normal_of_disjoint AddSubgroup.commute_of_normal_of_disjoint
+#align add_subgroup.commute_of_normal_of_disjoint AddSubgroup.addCommute_of_normal_of_disjoint
 
 end SubgroupNormal
 
chore: space after (#8178)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -941,7 +941,7 @@ theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x 
 @[to_additive]
 theorem exists_ne_one_of_nontrivial (H : Subgroup G) [Nontrivial H] :
     ∃ x ∈ H, x ≠ 1 := by
-  rwa [←Subgroup.nontrivial_iff_exists_ne_one]
+  rwa [← Subgroup.nontrivial_iff_exists_ne_one]
 
 @[to_additive]
 theorem nontrivial_iff_ne_bot (H : Subgroup G) : Nontrivial H ↔ H ≠ ⊥ := by
@@ -966,7 +966,7 @@ theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (
 
 @[to_additive]
 lemma ne_bot_iff_exists_ne_one {H : Subgroup G} : H ≠ ⊥ ↔ ∃ a : ↥H, a ≠ 1 := by
-  rw [←nontrivial_iff_ne_bot, nontrivial_iff_exists_ne_one]
+  rw [← nontrivial_iff_ne_bot, nontrivial_iff_exists_ne_one]
   simp only [ne_eq, Subtype.exists, mk_eq_one_iff, exists_prop]
 
 /-- The inf of two subgroups is their intersection. -/
feat: Order of elements of a subgroup (#8385)

The cardinality of a subgroup is greater than the order of any of its elements.

Rename

  • order_eq_card_zpowersFintype.card_zpowers
  • order_eq_card_zpowers'Nat.card_zpowers (and turn it around to match Nat.card_subgroupPowers)
  • Submonoid.powers_subsetSubmonoid.powers_le
  • orderOf_dvd_card_univorderOf_dvd_card
  • orderOf_subgroupSubgroup.orderOf
  • Subgroup.nonemptySubgroup.coe_nonempty
Diff
@@ -479,7 +479,7 @@ theorem toSubmonoid_le {p q : Subgroup G} : p.toSubmonoid ≤ q.toSubmonoid ↔
 #align add_subgroup.to_add_submonoid_le AddSubgroup.toAddSubmonoid_le
 
 @[to_additive (attr := simp)]
-lemma nonempty (s : Subgroup G) : (s : Set G).Nonempty := ⟨1, one_mem _⟩
+lemma coe_nonempty (s : Subgroup G) : (s : Set G).Nonempty := ⟨1, one_mem _⟩
 
 end Subgroup
 
feat: Simple Subgroup lemmas (#8341)
Diff
@@ -478,6 +478,9 @@ theorem toSubmonoid_le {p q : Subgroup G} : p.toSubmonoid ≤ q.toSubmonoid ↔
 #align subgroup.to_submonoid_le Subgroup.toSubmonoid_le
 #align add_subgroup.to_add_submonoid_le AddSubgroup.toAddSubmonoid_le
 
+@[to_additive (attr := simp)]
+lemma nonempty (s : Subgroup G) : (s : Set G).Nonempty := ⟨1, one_mem _⟩
+
 end Subgroup
 
 /-!
@@ -911,7 +914,7 @@ theorem eq_bot_of_subsingleton [Subsingleton H] : H = ⊥ := by
 #align subgroup.eq_bot_of_subsingleton Subgroup.eq_bot_of_subsingleton
 #align add_subgroup.eq_bot_of_subsingleton AddSubgroup.eq_bot_of_subsingleton
 
-@[to_additive]
+@[to_additive (attr := simp, norm_cast)]
 theorem coe_eq_univ {H : Subgroup G} : (H : Set G) = Set.univ ↔ H = ⊤ :=
   (SetLike.ext'_iff.trans (by rfl)).symm
 #align subgroup.coe_eq_univ Subgroup.coe_eq_univ
@@ -1274,10 +1277,8 @@ theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, c
 #align subgroup.closure_Union Subgroup.closure_iUnion
 #align add_subgroup.closure_Union AddSubgroup.closure_iUnion
 
-@[to_additive]
-theorem closure_eq_bot_iff (G : Type*) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} := by
-  rw [← le_bot_iff]
-  exact closure_le _
+@[to_additive (attr := simp)]
+theorem closure_eq_bot_iff : closure k = ⊥ ↔ k ⊆ {1} := le_bot_iff.symm.trans $ closure_le _
 #align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iff
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
 
refactor(Algebra): Define the center appropriately for non-associative algebras (#6996)

For a sensible theory, we require that the centre of an algebra is closed under multiplication. The definition currently in Mathlib works for associative algebras, but not non-associative algebras. This PR uses the definition from Cabrera García and Rodríguez Palacios, which works for any multiplication (addition) and which coincides with the current definition in the associative case.

I did consider whether the centralizer should also be re-defined in terms of operator commutation, but this still results in a centralizer which is not closed under multiplication in the non-associative case. I have therefore retained the current definition, but changed centralizer_eq_top_iff_subset and centralizer_univ to only work in the associative case.

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com> Co-authored-by: Christopher Hoskin <christopher.hoskin@overleaf.com>

Diff
@@ -2106,10 +2106,11 @@ theorem center_toSubmonoid : (center G).toSubmonoid = Submonoid.center G :=
 def centerUnitsEquivUnitsCenter (G₀ : Type*) [GroupWithZero G₀] :
     Subgroup.center (G₀ˣ) ≃* (Submonoid.center G₀)ˣ where
   toFun := MonoidHom.toHomUnits <|
-    { toFun := fun u ↦ ⟨(u : G₀ˣ), fun r ↦ by
-        rcases eq_or_ne r 0 with (rfl | hr)
-        · rw [mul_zero, zero_mul]
-        exact congrArg Units.val <| u.2 <| Units.mk0 r hr⟩
+    { toFun := fun u ↦ ⟨(u : G₀ˣ),
+      (Submonoid.mem_center_iff.mpr (fun r ↦ by
+          rcases eq_or_ne r 0 with (rfl | hr)
+          · rw [mul_zero, zero_mul]
+          exact congrArg Units.val <| (u.2.comm <| Units.mk0 r hr).symm))⟩
       map_one' := rfl
       map_mul' := fun _ _ ↦ rfl }
   invFun u := unitsCenterToCenterUnits G₀ u
@@ -2120,8 +2121,9 @@ def centerUnitsEquivUnitsCenter (G₀ : Type*) [GroupWithZero G₀] :
 variable {G}
 
 @[to_additive]
-theorem mem_center_iff {z : G} : z ∈ center G ↔ ∀ g, g * z = z * g :=
-  Iff.rfl
+theorem mem_center_iff {z : G} : z ∈ center G ↔ ∀ g, g * z = z * g := by
+  rw [← Semigroup.mem_center_iff]
+  exact Iff.rfl
 #align subgroup.mem_center_iff Subgroup.mem_center_iff
 #align add_subgroup.mem_center_iff AddSubgroup.mem_center_iff
 
@@ -2131,15 +2133,19 @@ instance decidableMemCenter (z : G) [Decidable (∀ g, g * z = z * g)] : Decidab
 
 @[to_additive]
 instance centerCharacteristic : (center G).Characteristic := by
-  refine' characteristic_iff_comap_le.mpr fun ϕ g hg h => _
+  refine' characteristic_iff_comap_le.mpr fun ϕ g hg => _
+  rw [mem_center_iff]
+  intro h
   rw [← ϕ.injective.eq_iff, ϕ.map_mul, ϕ.map_mul]
-  exact hg (ϕ h)
+  exact (hg.comm (ϕ h)).symm
 #align subgroup.center_characteristic Subgroup.centerCharacteristic
 #align add_subgroup.center_characteristic AddSubgroup.centerCharacteristic
 
 theorem _root_.CommGroup.center_eq_top {G : Type*} [CommGroup G] : center G = ⊤ := by
   rw [eq_top_iff']
-  intro x y
+  intro x
+  rw [Subgroup.mem_center_iff]
+  intro y
   exact mul_comm y x
 #align comm_group.center_eq_top CommGroup.center_eq_top
 
@@ -2149,7 +2155,9 @@ def _root_.Group.commGroupOfCenterEqTop (h : center G = ⊤) : CommGroup G :=
     mul_comm := by
       rw [eq_top_iff'] at h
       intro x y
-      exact h y x }
+      apply Subgroup.mem_center_iff.mp _ x
+      exact (h y)
+  }
 #align group.comm_group_of_center_eq_top Group.commGroupOfCenterEqTop
 
 variable (H)
@@ -2396,7 +2404,7 @@ instance IsCommutative.commGroup [h : H.IsCommutative] : CommGroup H :=
 #align add_subgroup.is_commutative.add_comm_group AddSubgroup.IsCommutative.addCommGroup
 
 instance center.isCommutative : (center G).IsCommutative :=
-  ⟨⟨fun a b => Subtype.ext (b.2 a)⟩⟩
+  ⟨⟨fun a b => Subtype.ext (b.2.comm a).symm⟩⟩
 #align subgroup.center.is_commutative Subgroup.center.isCommutative
 
 @[to_additive]
@@ -3779,7 +3787,7 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
 variable {M : Type*} [Monoid M]
 
 theorem eq_of_left_mem_center {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M) : g = h := by
-  rcases H with ⟨u, hu⟩; rwa [← u.mul_left_inj, ← Hg u]
+  rcases H with ⟨u, hu⟩; rwa [← u.mul_left_inj, Hg.comm u]
 #align is_conj.eq_of_left_mem_center IsConj.eq_of_left_mem_center
 
 theorem eq_of_right_mem_center {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center M) : g = h :=
@@ -3809,6 +3817,7 @@ theorem mk_bijOn (G : Type*) [Group G] :
   · rintro ⟨g⟩ hg
     refine ⟨g, ?_, rfl⟩
     simp only [mem_noncenter, Set.compl_def, Set.mem_setOf, Set.not_nontrivial_iff] at hg
+    rw [SetLike.mem_coe, Subgroup.mem_center_iff]
     intro h
     rw [← mul_inv_eq_iff_eq_mul]
     refine hg ?_ mem_carrier_mk
chore: golf all coe_iSup_of_directed (#8232)
Diff
@@ -1329,23 +1329,23 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 @[to_additive]
 theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
     {x : G} : x ∈ (iSup K : Subgroup G) ↔ ∃ i, x ∈ K i := by
-  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup K i) hi⟩
+  refine ⟨?_, fun ⟨i, hi⟩ ↦ le_iSup K i hi⟩
   suffices x ∈ closure (⋃ i, (K i : Set G)) → ∃ i, x ∈ K i by
     simpa only [closure_iUnion, closure_eq (K _)] using this
-  refine' fun hx => closure_induction hx (fun _ => mem_iUnion.1) _ _ _
-  · exact hι.elim fun i => ⟨i, (K i).one_mem⟩
+  refine fun hx ↦ closure_induction hx (fun _ ↦ mem_iUnion.1) ?_ ?_ ?_
+  · exact hι.elim fun i ↦ ⟨i, (K i).one_mem⟩
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hK i j with ⟨k, hki, hkj⟩
     exact ⟨k, mul_mem (hki hi) (hkj hj)⟩
-  rintro _ ⟨i, hi⟩
-  exact ⟨i, inv_mem hi⟩
+  · rintro _ ⟨i, hi⟩
+    exact ⟨i, inv_mem hi⟩
 #align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directed
 #align add_subgroup.mem_supr_of_directed AddSubgroup.mem_iSup_of_directed
 
 @[to_additive]
 theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
-    ((⨆ i, S i : Subgroup G) : Set G) = ⋃ i, ↑(S i) :=
-  Set.ext fun x => by simp [mem_iSup_of_directed hS]
+    ((⨆ i, S i : Subgroup G) : Set G) = ⋃ i, S i :=
+  Set.ext fun x ↦ by simp [mem_iSup_of_directed hS]
 #align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directed
 #align add_subgroup.coe_supr_of_directed AddSubgroup.coe_iSup_of_directed
 
feat: add a SetLike default rule set for aesop (#7111)

This creates a new aesop rule set called SetLike to house lemmas about membership in subobjects.

Lemmas like pow_mem should be included in the rule set:

@[to_additive (attr := aesop safe apply (rule_sets [SetLike]))]
theorem pow_mem {M A} [Monoid M] [SetLike A M] [SubmonoidClass A M] {S : A} {x : M}
(hx : x ∈ S) : ∀ n : ℕ, x ^ n ∈ S

Lemmas about closures, like AddSubmonoid.closure should be included in the rule set, but they should be assigned a penalty (here we choose 20 throughout) so that they are not attempted before the general purpose ones like pow_mem.

@[to_additive (attr := simp, aesop safe 20 apply (rule_sets [SetLike]))
  "The `AddSubmonoid` generated by a set includes the set."]
theorem subset_closure : s ⊆ closure s := fun _ hx => mem_closure.2 fun _ hS => hS hx

In order for aesop to make effective use of AddSubmonoid.closure it needs the following new lemma.

@[aesop 5% apply (rule_sets [SetLike])]
lemma mem_of_subset {s : Set B} (hp : s ⊆ p) {x : B} (hx : x ∈ s) : x ∈ p := hp hx

Note: this lemma is marked as very unsafe (5%) because it will apply whenever the goal is of the form x ∈ p where p is any term of a SetLike instance; and moreover, it will create s as a metavariable, which is in general a terrible idea, but necessary for the reason mentioned above.

Diff
@@ -124,6 +124,8 @@ class AddSubgroupClass (S G : Type*) [SubNegMonoid G] [SetLike S G] extends AddS
 
 attribute [to_additive] InvMemClass SubgroupClass
 
+attribute [aesop safe apply (rule_sets [SetLike])] inv_mem neg_mem
+
 @[to_additive (attr := simp)]
 theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G] {H : S}
     {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
@@ -138,13 +140,14 @@ theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G]
 variable {M S : Type*} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
 
 /-- A subgroup is closed under division. -/
-@[to_additive "An additive subgroup is closed under subtraction."]
+@[to_additive (attr := aesop safe apply (rule_sets [SetLike]))
+  "An additive subgroup is closed under subtraction."]
 theorem div_mem {x y : M} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H := by
   rw [div_eq_mul_inv]; exact mul_mem hx (inv_mem hy)
 #align div_mem div_mem
 #align sub_mem sub_mem
 
-@[to_additive]
+@[to_additive (attr := aesop safe apply (rule_sets [SetLike]))]
 theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
   | (n : ℕ) => by
     rw [zpow_ofNat]
@@ -1108,7 +1111,8 @@ theorem mem_closure {x : G} : x ∈ closure k ↔ ∀ K : Subgroup G, k ⊆ K 
 #align add_subgroup.mem_closure AddSubgroup.mem_closure
 
 /-- The subgroup generated by a set includes the set. -/
-@[to_additive (attr := simp) "The `AddSubgroup` generated by a set includes the set."]
+@[to_additive (attr := simp, aesop safe 20 apply (rule_sets [SetLike]))
+  "The `AddSubgroup` generated by a set includes the set."]
 theorem subset_closure : k ⊆ closure k := fun _ hx => mem_closure.2 fun _ hK => hK hx
 #align subgroup.subset_closure Subgroup.subset_closure
 #align add_subgroup.subset_closure AddSubgroup.subset_closure
chore: remove many Type _ before the colon (#7718)

We have turned to Type* instead of Type _, but many of them remained in mathlib because the straight replacement did not work. In general, having Type _ before the colon is a code smell, though, as it hides which types should be in the same universe and which shouldn't, and is not very robust.

This PR replaces most of the remaining Type _ before the colon (except those in category theory) by Type* or Type u. This has uncovered a few bugs (where declarations were not as polymorphic as they should be).

I had to increase heartbeats at two places when replacing Type _ by Type*, but I think it's worth it as it's really more robust.

Diff
@@ -3787,13 +3787,13 @@ end IsConj
 namespace ConjClasses
 
 /-- The conjugacy classes that are not trivial. -/
-def noncenter (G : Type _) [Monoid G] : Set (ConjClasses G) :=
+def noncenter (G : Type*) [Monoid G] : Set (ConjClasses G) :=
   {x | x.carrier.Nontrivial}
 
 @[simp] lemma mem_noncenter [Monoid G] (g : ConjClasses G) :
   g ∈ noncenter G ↔ g.carrier.Nontrivial := Iff.rfl
 
-theorem mk_bijOn (G : Type _) [Group G] :
+theorem mk_bijOn (G : Type*) [Group G] :
     Set.BijOn ConjClasses.mk (↑(Subgroup.center G)) (noncenter G)ᶜ := by
   refine ⟨fun g hg ↦ ?_, fun x hx y _ H ↦ ?_, ?_⟩
   · simp only [mem_noncenter, Set.compl_def, Set.mem_setOf, Set.not_nontrivial_iff]
feat: add a Module.Finite instance for units of number field (#7412)

Add the following instance

instance : Module.Finite ℤ (Additive (𝓞 K)ˣ) 

To prove this instance, it is helpful to add some rfl lemmas about Additive and AddMonoidHom.toIntLinearMap

This PR also fixes a couple of typo in the docstring

Diff
@@ -1373,6 +1373,15 @@ theorem coe_comap (K : Subgroup N) (f : G →* N) : (K.comap f : Set G) = f ⁻
 #align subgroup.coe_comap Subgroup.coe_comap
 #align add_subgroup.coe_comap AddSubgroup.coe_comap
 
+@[simp]
+theorem toAddSubgroup_comap {G₂ : Type*} [Group G₂] (f : G →* G₂) (s : Subgroup G₂) :
+    s.toAddSubgroup.comap (MonoidHom.toAdditive f) = Subgroup.toAddSubgroup (s.comap f) := rfl
+
+@[simp]
+theorem _root_.AddSubgroup.toSubgroup_comap {A A₂ : Type*} [AddGroup A] [AddGroup A₂]
+    (f : A →+ A₂)  (s : AddSubgroup A₂) :
+    s.toSubgroup.comap (AddMonoidHom.toMultiplicative f) = AddSubgroup.toSubgroup (s.comap f) := rfl
+
 @[to_additive (attr := simp)]
 theorem mem_comap {K : Subgroup N} {f : G →* N} {x : G} : x ∈ K.comap f ↔ f x ∈ K :=
   Iff.rfl
@@ -2729,6 +2738,14 @@ theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type*} [Group G₁] [Group G₂]
 #align monoid_hom.subgroup_of_range_eq_of_le MonoidHom.subgroupOf_range_eq_of_le
 #align add_monoid_hom.add_subgroup_of_range_eq_of_le AddMonoidHom.addSubgroupOf_range_eq_of_le
 
+@[simp]
+theorem coe_toAdditive_range (f : G →* G') :
+    (MonoidHom.toAdditive f).range = Subgroup.toAddSubgroup f.range := rfl
+
+@[simp]
+theorem coe_toMultiplicative_range {A A' : Type*} [AddGroup A] [AddGroup A'] (f : A →+ A') :
+    (AddMonoidHom.toMultiplicative f).range = AddSubgroup.toSubgroup f.range := rfl
+
 /-- Computable alternative to `MonoidHom.ofInjective`. -/
 @[to_additive "Computable alternative to `AddMonoidHom.ofInjective`."]
 def ofLeftInverse {f : G →* N} {g : N →* G} (h : Function.LeftInverse g f) : G ≃* f.range :=
@@ -2930,6 +2947,14 @@ lemma ker_fst : ker (fst G G') = .prod ⊥ ⊤ := SetLike.ext fun _ => (and_true
 @[to_additive (attr := simp)]
 lemma ker_snd : ker (snd G G') = .prod ⊤ ⊥ := SetLike.ext fun _ => (true_and_iff _).symm
 
+@[simp]
+theorem coe_toAdditive_ker (f : G →* G') :
+    (MonoidHom.toAdditive f).ker = Subgroup.toAddSubgroup f.ker := rfl
+
+@[simp]
+theorem coe_toMultiplicative_ker {A A' : Type*} [AddGroup A] [AddGroup A'] (f : A →+ A') :
+    (AddMonoidHom.toMultiplicative f).ker = AddSubgroup.toSubgroup f.ker := rfl
+
 end Ker
 
 section EqLocus
feat: small missing group lemmas (#7614)

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

Diff
@@ -2893,6 +2893,11 @@ theorem _root_.Subgroup.ker_inclusion {H K : Subgroup G} (h : H ≤ K) : (inclus
 #align subgroup.ker_inclusion Subgroup.ker_inclusion
 #align add_subgroup.ker_inclusion AddSubgroup.ker_inclusion
 
+@[to_additive]
+theorem ker_prod {M N : Type*} [MulOneClass M] [MulOneClass N] (f : G →* M) (g : G →* N) :
+    (f.prod g).ker = f.ker ⊓ g.ker :=
+  SetLike.ext fun _ => Prod.mk_eq_one
+
 @[to_additive]
 theorem prodMap_comap_prod {G' : Type*} {N' : Type*} [Group G'] [Group N'] (f : G →* N)
     (g : G' →* N') (S : Subgroup N) (S' : Subgroup N') :
feat: sup_eq_closure for Submonoid and Subgroup (#7468)
Diff
@@ -1260,6 +1260,10 @@ theorem closure_union (s t : Set G) : closure (s ∪ t) = closure s ⊔ closure
 #align subgroup.closure_union Subgroup.closure_union
 #align add_subgroup.closure_union AddSubgroup.closure_union
 
+@[to_additive]
+theorem sup_eq_closure (H H' : Subgroup G) : H ⊔ H' = closure ((H : Set G) ∪ (H' : Set G)) :=
+  by simp_rw [closure_union, closure_eq]
+
 @[to_additive]
 theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, closure (s i) :=
   (Subgroup.gi G).gc.l_iSup
@@ -3536,7 +3540,7 @@ variable {C : Type*} [CommGroup C] {s t : Subgroup C} {x : C}
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
   ⟨fun h => by
-    rw [← closure_eq s, ← closure_eq t, ← closure_union] at h
+    rw [sup_eq_closure] at h
     refine Subgroup.closure_induction h ?_ ?_ ?_ ?_
     · rintro y (h | h)
       · exact ⟨y, h, 1, t.one_mem, by simp⟩
doc: fix typos (#7470)

Co-Authored-By: newell <newell.jensen@gmail.com>

Diff
@@ -501,7 +501,7 @@ abbrev AddSubgroup.toSubgroup' : AddSubgroup (Additive G) ≃o Subgroup G :=
   Subgroup.toAddSubgroup.symm
 #align add_subgroup.to_subgroup' AddSubgroup.toSubgroup'
 
-/-- Additive supgroups of an additive group `A` are isomorphic to subgroups of `Multiplicative A`.
+/-- Additive subgroups of an additive group `A` are isomorphic to subgroups of `Multiplicative A`.
 -/
 @[simps!]
 def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A) where
feat: add theorem cast_subgroup_of_units_card_ne_zero (#6500)

Adds a theorem saying the cardinality of a multiplicative subgroup of a field, cast to the field, is nonzero. As well as sum_subgroup_units_zero_of_ne_bot and other theorems about summing over multiplicative subgroups.

Co-authored-by: Pratyush Mishra <prat@upenn.edu> Co-authored-by: Buster <rcopley@gmail.com>

Diff
@@ -932,16 +932,21 @@ theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x 
 #align subgroup.nontrivial_iff_exists_ne_one Subgroup.nontrivial_iff_exists_ne_one
 #align add_subgroup.nontrivial_iff_exists_ne_zero AddSubgroup.nontrivial_iff_exists_ne_zero
 
+@[to_additive]
+theorem exists_ne_one_of_nontrivial (H : Subgroup G) [Nontrivial H] :
+    ∃ x ∈ H, x ≠ 1 := by
+  rwa [←Subgroup.nontrivial_iff_exists_ne_one]
+
+@[to_additive]
+theorem nontrivial_iff_ne_bot (H : Subgroup G) : Nontrivial H ↔ H ≠ ⊥ := by
+  rw [nontrivial_iff_exists_ne_one, ne_eq, eq_bot_iff_forall]
+  simp only [ne_eq, not_forall, exists_prop]
+
 /-- A subgroup is either the trivial subgroup or nontrivial. -/
 @[to_additive "A subgroup is either the trivial subgroup or nontrivial."]
 theorem bot_or_nontrivial (H : Subgroup G) : H = ⊥ ∨ Nontrivial H := by
-  classical
-    by_cases h : ∀ x ∈ H, x = (1 : G)
-    · left
-      exact H.eq_bot_iff_forall.mpr h
-    · right
-      simp only [not_forall] at h
-      simpa [nontrivial_iff_exists_ne_one] using h
+  have := nontrivial_iff_ne_bot H
+  tauto
 #align subgroup.bot_or_nontrivial Subgroup.bot_or_nontrivial
 #align add_subgroup.bot_or_nontrivial AddSubgroup.bot_or_nontrivial
 
@@ -953,6 +958,11 @@ theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (
 #align subgroup.bot_or_exists_ne_one Subgroup.bot_or_exists_ne_one
 #align add_subgroup.bot_or_exists_ne_zero AddSubgroup.bot_or_exists_ne_zero
 
+@[to_additive]
+lemma ne_bot_iff_exists_ne_one {H : Subgroup G} : H ≠ ⊥ ↔ ∃ a : ↥H, a ≠ 1 := by
+  rw [←nontrivial_iff_ne_bot, nontrivial_iff_exists_ne_one]
+  simp only [ne_eq, Subtype.exists, mk_eq_one_iff, exists_prop]
+
 /-- The inf of two subgroups is their intersection. -/
 @[to_additive "The inf of two `AddSubgroup`s is their intersection."]
 instance : Inf (Subgroup G) :=
refactor: redefine Monoid.Coprod (#2214)
  • Redefine Monoid.Coprod.
  • Use @[to_additive].
  • Expand API.
Diff
@@ -172,8 +172,6 @@ theorem exists_inv_mem_iff_exists_mem {P : G → Prop} :
 #align exists_inv_mem_iff_exists_mem exists_inv_mem_iff_exists_mem
 #align exists_neg_mem_iff_exists_mem exists_neg_mem_iff_exists_mem
 
-
-
 @[to_additive]
 theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H :=
   -- Porting note: whut? why do we need this?
style: fix wrapping of where (#7149)
Diff
@@ -3592,8 +3592,8 @@ instance prod_subgroupOf_prod_normal {H₁ K₁ : Subgroup G} {H₂ K₂ : Subgr
 
 @[to_additive]
 instance prod_normal (H : Subgroup G) (K : Subgroup N) [hH : H.Normal] [hK : K.Normal] :
-    (H.prod K).Normal
-    where conj_mem n hg g :=
+    (H.prod K).Normal where
+  conj_mem n hg g :=
     ⟨hH.conj_mem n.fst (Subgroup.mem_prod.mp hg).1 g.fst,
       hK.conj_mem n.snd (Subgroup.mem_prod.mp hg).2 g.snd⟩
 #align subgroup.prod_normal Subgroup.prod_normal
chore: remove some no longer relevant porting notes (#7108)
Diff
@@ -2513,7 +2513,6 @@ theorem normalClosure_mono {s t : Set G} (h : s ⊆ t) : normalClosure s ≤ nor
   normalClosure_le_normal (Set.Subset.trans h subset_normalClosure)
 #align subgroup.normal_closure_mono Subgroup.normalClosure_mono
 
--- Porting note: the elaborator trips up on using underscores for names in `⨅`
 theorem normalClosure_eq_iInf :
     normalClosure s = ⨅ (N : Subgroup G) (_ : Normal N) (_ : s ⊆ N), N :=
   le_antisymm (le_iInf fun N => le_iInf fun hN => le_iInf normalClosure_le_normal)
@@ -3648,7 +3647,6 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
 /-- Elements of disjoint, normal subgroups commute. -/
 @[to_additive "Elements of disjoint, normal subgroups commute."]
 theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Normal) (hH₂ : H₂.Normal)
-    -- Porting note: Goal was `Commute x y`. Removed ambiguity.
     (hdis : Disjoint H₁ H₂) (x y : G) (hx : x ∈ H₁) (hy : y ∈ H₂) : Commute x y := by
   suffices x * y * x⁻¹ * y⁻¹ = 1 by
     show x * y = y * x
chore: replace anonymous morphism constructors with named fields (#7015)

This makes it easier to refactor the order or inheritance structure of morphisms without having to change all of the anonymous constructors.

This is far from exhaustive.

Diff
@@ -279,8 +279,8 @@ instance (priority := 75) toLinearOrderedCommGroup {G : Type*} [LinearOrderedCom
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive (attr := coe)
   "The natural group hom from an additive subgroup of `AddGroup` `G` to `G`."]
-protected def subtype : H →* G :=
-  ⟨⟨((↑) : H → G), rfl⟩, fun _ _ => rfl⟩
+protected def subtype : H →* G where
+  toFun := ((↑) : H → G); map_one' := rfl; map_mul' := fun _ _ => rfl
 #align subgroup_class.subtype SubgroupClass.subtype
 #align add_subgroup_class.subtype AddSubgroupClass.subtype
 
@@ -783,8 +783,8 @@ instance toLinearOrderedCommGroup {G : Type*} [LinearOrderedCommGroup G] (H : Su
 
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an `AddSubgroup` of `AddGroup` `G` to `G`."]
-protected def subtype : H →* G :=
-  ⟨⟨((↑) : H → G), rfl⟩, fun _ _ => rfl⟩
+protected def subtype : H →* G where
+  toFun := ((↑) : H → G); map_one' := rfl; map_mul' _ _ := rfl
 #align subgroup.subtype Subgroup.subtype
 #align add_subgroup.subtype AddSubgroup.subtype
 
feat(Subgroup): apply_ofInjective_symm (#6898)

Co-authored-by: Chris Hughes <33847686+ChrisHughes24@users.noreply.github.com>

Diff
@@ -2764,6 +2764,11 @@ theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
 #align monoid_hom.of_injective_apply MonoidHom.ofInjective_apply
 #align add_monoid_hom.of_injective_apply AddMonoidHom.ofInjective_apply
 
+@[to_additive (attr := simp)]
+theorem apply_ofInjective_symm {f : G →* N} (hf : Function.Injective f) (x : f.range) :
+    f ((ofInjective hf).symm x) = x :=
+  Subtype.ext_iff.1 <| (ofInjective hf).apply_symm_apply x
+
 section Ker
 
 variable {M : Type*} [MulOneClass M]
feat: unit equivalences (#6526)

Useful for Wedderburn's little theorem.

Co-authored-by: Eric Rodriguez <37984851+ericrbg@users.noreply.github.com>

Diff
@@ -2076,6 +2076,22 @@ theorem center_toSubmonoid : (center G).toSubmonoid = Submonoid.center G :=
 #align subgroup.center_to_submonoid Subgroup.center_toSubmonoid
 #align add_subgroup.center_to_add_submonoid AddSubgroup.center_toAddSubmonoid
 
+/-- For a group with zero, the center of the units is the same as the units of the center. -/
+@[simps! apply_val_coe symm_apply_coe_val]
+def centerUnitsEquivUnitsCenter (G₀ : Type*) [GroupWithZero G₀] :
+    Subgroup.center (G₀ˣ) ≃* (Submonoid.center G₀)ˣ where
+  toFun := MonoidHom.toHomUnits <|
+    { toFun := fun u ↦ ⟨(u : G₀ˣ), fun r ↦ by
+        rcases eq_or_ne r 0 with (rfl | hr)
+        · rw [mul_zero, zero_mul]
+        exact congrArg Units.val <| u.2 <| Units.mk0 r hr⟩
+      map_one' := rfl
+      map_mul' := fun _ _ ↦ rfl }
+  invFun u := unitsCenterToCenterUnits G₀ u
+  left_inv _ := by ext; rfl
+  right_inv _ := by ext; rfl
+  map_mul' := map_mul _
+
 variable {G}
 
 @[to_additive]
feat(GroupTheory/Subgroup/Basic): ker_{fst,snd} (#6639)

Co-authored-by: Yakov Pechersky <pechersky@users.noreply.github.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -2887,6 +2887,12 @@ instance (priority := 100) normal_ker (f : G →* M) : f.ker.Normal :=
 #align monoid_hom.normal_ker MonoidHom.normal_ker
 #align add_monoid_hom.normal_ker AddMonoidHom.normal_ker
 
+@[to_additive (attr := simp)]
+lemma ker_fst : ker (fst G G') = .prod ⊥ ⊤ := SetLike.ext fun _ => (and_true_iff _).symm
+
+@[to_additive (attr := simp)]
+lemma ker_snd : ker (snd G G') = .prod ⊤ ⊥ := SetLike.ext fun _ => (true_and_iff _).symm
+
 end Ker
 
 section EqLocus
refactor(*): Protect Function.Commute (#6456)

This PR protects Function.Commute, so that it no longer clashes with Commute in the root namespace, as suggested by @j-loreaux in #6290.

Diff
@@ -3622,7 +3622,7 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
 @[to_additive "Elements of disjoint, normal subgroups commute."]
 theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Normal) (hH₂ : H₂.Normal)
     -- Porting note: Goal was `Commute x y`. Removed ambiguity.
-    (hdis : Disjoint H₁ H₂) (x y : G) (hx : x ∈ H₁) (hy : y ∈ H₂) : _root_.Commute x y := by
+    (hdis : Disjoint H₁ H₂) (x y : G) (hx : x ∈ H₁) (hy : y ∈ H₂) : Commute x y := by
   suffices x * y * x⁻¹ * y⁻¹ = 1 by
     show x * y = y * x
     · rw [mul_assoc, mul_eq_one_iff_eq_inv] at this
feat: the class equation (groups) (#6375)

This is mostly mathported work of Johan's towards Wedderburn's Little theorem.

Co-authored-by: Eric Rodriguez <37984851+ericrbg@users.noreply.github.com>

Diff
@@ -3717,4 +3717,35 @@ theorem eq_of_right_mem_center {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center
 
 end IsConj
 
+namespace ConjClasses
+
+/-- The conjugacy classes that are not trivial. -/
+def noncenter (G : Type _) [Monoid G] : Set (ConjClasses G) :=
+  {x | x.carrier.Nontrivial}
+
+@[simp] lemma mem_noncenter [Monoid G] (g : ConjClasses G) :
+  g ∈ noncenter G ↔ g.carrier.Nontrivial := Iff.rfl
+
+theorem mk_bijOn (G : Type _) [Group G] :
+    Set.BijOn ConjClasses.mk (↑(Subgroup.center G)) (noncenter G)ᶜ := by
+  refine ⟨fun g hg ↦ ?_, fun x hx y _ H ↦ ?_, ?_⟩
+  · simp only [mem_noncenter, Set.compl_def, Set.mem_setOf, Set.not_nontrivial_iff]
+    intro x hx y hy
+    simp only [mem_carrier_iff_mk_eq, mk_eq_mk_iff_isConj] at hx hy
+    rw [hx.eq_of_right_mem_center hg, hy.eq_of_right_mem_center hg]
+  · rw [mk_eq_mk_iff_isConj] at H
+    exact H.eq_of_left_mem_center hx
+  · rintro ⟨g⟩ hg
+    refine ⟨g, ?_, rfl⟩
+    simp only [mem_noncenter, Set.compl_def, Set.mem_setOf, Set.not_nontrivial_iff] at hg
+    intro h
+    rw [← mul_inv_eq_iff_eq_mul]
+    refine hg ?_ mem_carrier_mk
+    rw [mem_carrier_iff_mk_eq]
+    apply mk_eq_mk_iff_isConj.mpr
+    rw [isConj_comm, isConj_iff]
+    exact ⟨h, rfl⟩
+
+end ConjClasses
+
 assert_not_exists Multiset
chore: adjust priorities of mem_map lemmas (#6327)

The mem_map lemmas were inconsistently either not simp lemmas at all, simp lemmas, or simp lemmas with a lowered priority.

This PR makes them uniformly low priority simp lemmas, and adds a few simp attributes to "better" simp lemmas instead. (However these lemmas are themselves quite inconsistent across different algebraic structures, and I haven't attempted to add missing ones.)

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

Diff
@@ -1457,7 +1457,10 @@ theorem mem_map_equiv {f : G ≃* N} {K : Subgroup G} {x : N} :
 #align subgroup.mem_map_equiv Subgroup.mem_map_equiv
 #align add_subgroup.mem_map_equiv AddSubgroup.mem_map_equiv
 
-@[to_additive]
+-- The simpNF linter says that the LHS can be simplified via `Subgroup.mem_map`.
+-- However this is a higher priority lemma.
+-- https://github.com/leanprover/std4/issues/207
+@[to_additive (attr := simp 1100, nolint simpNF)]
 theorem mem_map_iff_mem {f : G →* N} (hf : Function.Injective f) {K : Subgroup G} {x : G} :
     f x ∈ K.map f ↔ x ∈ K :=
   hf.mem_set_image
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
@@ -89,14 +89,14 @@ subgroup, subgroups
 open Function
 open Int
 
-variable {G G' G'' : Type _} [Group G] [Group G'] [Group G'']
+variable {G G' G'' : Type*} [Group G] [Group G'] [Group G'']
 
-variable {A : Type _} [AddGroup A]
+variable {A : Type*} [AddGroup A]
 
 section SubgroupClass
 
 /-- `InvMemClass S G` states `S` is a type of subsets `s ⊆ G` closed under inverses. -/
-class InvMemClass (S G : Type _) [Inv G] [SetLike S G] : Prop where
+class InvMemClass (S G : Type*) [Inv G] [SetLike S G] : Prop where
   /-- `s` is closed under inverses -/
   inv_mem : ∀ {s : S} {x}, x ∈ s → x⁻¹ ∈ s
 #align inv_mem_class InvMemClass
@@ -104,7 +104,7 @@ class InvMemClass (S G : Type _) [Inv G] [SetLike S G] : Prop where
 export InvMemClass (inv_mem)
 
 /-- `NegMemClass S G` states `S` is a type of subsets `s ⊆ G` closed under negation. -/
-class NegMemClass (S G : Type _) [Neg G] [SetLike S G] : Prop where
+class NegMemClass (S G : Type*) [Neg G] [SetLike S G] : Prop where
   /-- `s` is closed under negation -/
   neg_mem : ∀ {s : S} {x}, x ∈ s → -x ∈ s
 #align neg_mem_class NegMemClass
@@ -112,13 +112,13 @@ class NegMemClass (S G : Type _) [Neg G] [SetLike S G] : Prop where
 export NegMemClass (neg_mem)
 
 /-- `SubgroupClass S G` states `S` is a type of subsets `s ⊆ G` that are subgroups of `G`. -/
-class SubgroupClass (S G : Type _) [DivInvMonoid G] [SetLike S G] extends SubmonoidClass S G,
+class SubgroupClass (S G : Type*) [DivInvMonoid G] [SetLike S G] extends SubmonoidClass S G,
   InvMemClass S G : Prop
 #align subgroup_class SubgroupClass
 
 /-- `AddSubgroupClass S G` states `S` is a type of subsets `s ⊆ G` that are
 additive subgroups of `G`. -/
-class AddSubgroupClass (S G : Type _) [SubNegMonoid G] [SetLike S G] extends AddSubmonoidClass S G,
+class AddSubgroupClass (S G : Type*) [SubNegMonoid G] [SetLike S G] extends AddSubmonoidClass S G,
   NegMemClass S G : Prop
 #align add_subgroup_class AddSubgroupClass
 
@@ -135,7 +135,7 @@ theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G]
     [NegMemClass S G] {H : S} {x : G} : |x| ∈ H ↔ x ∈ H := by
   cases abs_choice x <;> simp [*]
 
-variable {M S : Type _} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
+variable {M S : Type*} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
 
 /-- A subgroup is closed under division. -/
 @[to_additive "An additive subgroup is closed under subtraction."]
@@ -247,7 +247,7 @@ instance (priority := 75) toGroup : Group H :=
 -- Prefer subclasses of `CommGroup` over subclasses of `SubgroupClass`.
 /-- A subgroup of a `CommGroup` is a `CommGroup`. -/
 @[to_additive "An additive subgroup of an `AddCommGroup` is an `AddCommGroup`."]
-instance (priority := 75) toCommGroup {G : Type _} [CommGroup G] [SetLike S G] [SubgroupClass S G] :
+instance (priority := 75) toCommGroup {G : Type*} [CommGroup G] [SetLike S G] [SubgroupClass S G] :
     CommGroup H :=
   Subtype.coe_injective.commGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
     (fun _ _ => rfl) fun _ _ => rfl
@@ -257,7 +257,7 @@ instance (priority := 75) toCommGroup {G : Type _} [CommGroup G] [SetLike S G] [
 -- Prefer subclasses of `Group` over subclasses of `SubgroupClass`.
 /-- A subgroup of an `OrderedCommGroup` is an `OrderedCommGroup`. -/
 @[to_additive "An additive subgroup of an `AddOrderedCommGroup` is an `AddOrderedCommGroup`."]
-instance (priority := 75) toOrderedCommGroup {G : Type _} [OrderedCommGroup G] [SetLike S G]
+instance (priority := 75) toOrderedCommGroup {G : Type*} [OrderedCommGroup G] [SetLike S G]
     [SubgroupClass S G] : OrderedCommGroup H :=
   Subtype.coe_injective.orderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
     (fun _ _ => rfl) fun _ _ => rfl
@@ -269,7 +269,7 @@ instance (priority := 75) toOrderedCommGroup {G : Type _} [OrderedCommGroup G] [
 @[to_additive
       "An additive subgroup of a `LinearOrderedAddCommGroup` is a
         `LinearOrderedAddCommGroup`."]
-instance (priority := 75) toLinearOrderedCommGroup {G : Type _} [LinearOrderedCommGroup G]
+instance (priority := 75) toLinearOrderedCommGroup {G : Type*} [LinearOrderedCommGroup G]
     [SetLike S G] [SubgroupClass S G] : LinearOrderedCommGroup H :=
   Subtype.coe_injective.linearOrderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl)
     (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
@@ -359,14 +359,14 @@ end SubgroupClass
 
 /-- A subgroup of a group `G` is a subset containing 1, closed under multiplication
 and closed under multiplicative inverse. -/
-structure Subgroup (G : Type _) [Group G] extends Submonoid G where
+structure Subgroup (G : Type*) [Group G] extends Submonoid G where
   /-- `G` is closed under inverses -/
   inv_mem' {x} : x ∈ carrier → x⁻¹ ∈ carrier
 #align subgroup Subgroup
 
 /-- An additive subgroup of an additive group `G` is a subset containing 0, closed
 under addition and additive inverse. -/
-structure AddSubgroup (G : Type _) [AddGroup G] extends AddSubmonoid G where
+structure AddSubgroup (G : Type*) [AddGroup G] extends AddSubmonoid G where
   /-- `G` is closed under negation -/
   neg_mem' {x} : x ∈ carrier → -x ∈ carrier
 #align add_subgroup AddSubgroup
@@ -747,7 +747,7 @@ theorem mk_eq_one_iff {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 :=
 
 /-- A subgroup of a group inherits a group structure. -/
 @[to_additive "An `AddSubgroup` of an `AddGroup` inherits an `AddGroup` structure."]
-instance toGroup {G : Type _} [Group G] (H : Subgroup G) : Group H :=
+instance toGroup {G : Type*} [Group G] (H : Subgroup G) : Group H :=
   Subtype.coe_injective.group _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
     (fun _ _ => rfl) fun _ _ => rfl
 #align subgroup.to_group Subgroup.toGroup
@@ -755,7 +755,7 @@ instance toGroup {G : Type _} [Group G] (H : Subgroup G) : Group H :=
 
 /-- A subgroup of a `CommGroup` is a `CommGroup`. -/
 @[to_additive "An `AddSubgroup` of an `AddCommGroup` is an `AddCommGroup`."]
-instance toCommGroup {G : Type _} [CommGroup G] (H : Subgroup G) : CommGroup H :=
+instance toCommGroup {G : Type*} [CommGroup G] (H : Subgroup G) : CommGroup H :=
   Subtype.coe_injective.commGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
     (fun _ _ => rfl) fun _ _ => rfl
 #align subgroup.to_comm_group Subgroup.toCommGroup
@@ -763,7 +763,7 @@ instance toCommGroup {G : Type _} [CommGroup G] (H : Subgroup G) : CommGroup H :
 
 /-- A subgroup of an `OrderedCommGroup` is an `OrderedCommGroup`. -/
 @[to_additive "An `AddSubgroup` of an `AddOrderedCommGroup` is an `AddOrderedCommGroup`."]
-instance toOrderedCommGroup {G : Type _} [OrderedCommGroup G] (H : Subgroup G) :
+instance toOrderedCommGroup {G : Type*} [OrderedCommGroup G] (H : Subgroup G) :
     OrderedCommGroup H :=
   Subtype.coe_injective.orderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
     (fun _ _ => rfl) fun _ _ => rfl
@@ -774,7 +774,7 @@ instance toOrderedCommGroup {G : Type _} [OrderedCommGroup G] (H : Subgroup G) :
 @[to_additive
       "An `AddSubgroup` of a `LinearOrderedAddCommGroup` is a
         `LinearOrderedAddCommGroup`."]
-instance toLinearOrderedCommGroup {G : Type _} [LinearOrderedCommGroup G] (H : Subgroup G) :
+instance toLinearOrderedCommGroup {G : Type*} [LinearOrderedCommGroup G] (H : Subgroup G) :
     LinearOrderedCommGroup H :=
   Subtype.coe_injective.linearOrderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl)
     (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
@@ -994,13 +994,13 @@ theorem mem_sInf {S : Set (Subgroup G)} {x : G} : x ∈ sInf S ↔ ∀ p ∈ S,
 #align add_subgroup.mem_Inf AddSubgroup.mem_sInf
 
 @[to_additive]
-theorem mem_iInf {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
+theorem mem_iInf {ι : Sort*} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
   simp only [iInf, mem_sInf, Set.forall_range_iff]
 #align subgroup.mem_infi Subgroup.mem_iInf
 #align add_subgroup.mem_infi AddSubgroup.mem_iInf
 
 @[to_additive (attr := simp, norm_cast)]
-theorem coe_iInf {ι : Sort _} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
+theorem coe_iInf {ι : Sort*} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
   simp only [iInf, coe_sInf, Set.biInter_range]
 #align subgroup.coe_infi Subgroup.coe_iInf
 #align add_subgroup.coe_infi AddSubgroup.coe_iInf
@@ -1038,7 +1038,7 @@ theorem mul_mem_sup {S T : Subgroup G} {x y : G} (hx : x ∈ S) (hy : y ∈ T) :
 #align add_subgroup.add_mem_sup AddSubgroup.add_mem_sup
 
 @[to_additive]
-theorem mem_iSup_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
+theorem mem_iSup_of_mem {ι : Sort*} {S : ι → Subgroup G} (i : ι) :
     ∀ {x : G}, x ∈ S i → x ∈ iSup S :=
   have : S i ≤ iSup S := le_iSup _ _; fun h ↦ this h
 #align subgroup.mem_supr_of_mem Subgroup.mem_iSup_of_mem
@@ -1259,14 +1259,14 @@ theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, c
 #align add_subgroup.closure_Union AddSubgroup.closure_iUnion
 
 @[to_additive]
-theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} := by
+theorem closure_eq_bot_iff (G : Type*) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} := by
   rw [← le_bot_iff]
   exact closure_le _
 #align subgroup.closure_eq_bot_iff Subgroup.closure_eq_bot_iff
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
 
 @[to_additive]
-theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
+theorem iSup_eq_closure {ι : Sort*} (p : ι → Subgroup G) :
     ⨆ i, p i = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
 #align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
 #align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
@@ -1342,13 +1342,13 @@ theorem mem_sSup_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : D
 #align subgroup.mem_Sup_of_directed_on Subgroup.mem_sSup_of_directedOn
 #align add_subgroup.mem_Sup_of_directed_on AddSubgroup.mem_sSup_of_directedOn
 
-variable {N : Type _} [Group N] {P : Type _} [Group P]
+variable {N : Type*} [Group N] {P : Type*} [Group P]
 
 /-- The preimage of a subgroup along a monoid homomorphism is a subgroup. -/
 @[to_additive
       "The preimage of an `AddSubgroup` along an `AddMonoid` homomorphism
       is an `AddSubgroup`."]
-def comap {N : Type _} [Group N] (f : G →* N) (H : Subgroup N) : Subgroup G :=
+def comap {N : Type*} [Group N] (f : G →* N) (H : Subgroup N) : Subgroup G :=
   { H.toSubmonoid.comap f with
     carrier := f ⁻¹' H
     inv_mem' := fun {a} ha => show f a⁻¹ ∈ H by rw [f.map_inv]; exact H.inv_mem ha }
@@ -1509,7 +1509,7 @@ theorem map_sup (H K : Subgroup G) (f : G →* N) : (H ⊔ K).map f = H.map f 
 #align add_subgroup.map_sup AddSubgroup.map_sup
 
 @[to_additive]
-theorem map_iSup {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
+theorem map_iSup {ι : Sort*} (f : G →* N) (s : ι → Subgroup G) :
     (iSup s).map f = ⨆ i, (s i).map f :=
   (gc_map_comap f).l_iSup
 #align subgroup.map_supr Subgroup.map_iSup
@@ -1523,7 +1523,7 @@ theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
 #align add_subgroup.comap_sup_comap_le AddSubgroup.comap_sup_comap_le
 
 @[to_additive]
-theorem iSup_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
+theorem iSup_comap_le {ι : Sort*} (f : G →* N) (s : ι → Subgroup N) :
     ⨆ i, (s i).comap f ≤ (iSup s).comap f :=
   Monotone.le_map_iSup fun _ _ => comap_mono
 #align subgroup.supr_comap_le Subgroup.iSup_comap_le
@@ -1536,7 +1536,7 @@ theorem comap_inf (H K : Subgroup N) (f : G →* N) : (H ⊓ K).comap f = H.coma
 #align add_subgroup.comap_inf AddSubgroup.comap_inf
 
 @[to_additive]
-theorem comap_iInf {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
+theorem comap_iInf {ι : Sort*} (f : G →* N) (s : ι → Subgroup N) :
     (iInf s).comap f = ⨅ i, (s i).comap f :=
   (gc_map_comap f).u_iInf
 #align subgroup.comap_infi Subgroup.comap_iInf
@@ -1586,7 +1586,7 @@ def subgroupOf (H K : Subgroup G) : Subgroup K :=
 
 /-- If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`. -/
 @[to_additive (attr := simps) "If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`."]
-def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K) :
+def subgroupOfEquivOfLe {G : Type*} [Group G] {H K : Subgroup G} (h : H ≤ K) :
     H.subgroupOf K ≃* H where
   toFun g := ⟨g.1, g.2⟩
   invFun g := ⟨⟨g.1, h g.2⟩, g.2⟩
@@ -1788,7 +1788,7 @@ def prodEquiv (H : Subgroup G) (K : Subgroup N) : H.prod K ≃* H × K :=
 
 section Pi
 
-variable {η : Type _} {f : η → Type _}
+variable {η : Type*} {f : η → Type*}
 
 -- defined here and not in GroupTheory.Submonoid.Operations to have access to Algebra.Group.Pi
 /-- A version of `Set.pi` for submonoids. Given an index set `I` and a family of submodules
@@ -1925,7 +1925,7 @@ namespace Subgroup
 variable {H K : Subgroup G}
 
 @[to_additive]
-instance (priority := 100) normal_of_comm {G : Type _} [CommGroup G] (H : Subgroup G) : H.Normal :=
+instance (priority := 100) normal_of_comm {G : Type*} [CommGroup G] (H : Subgroup G) : H.Normal :=
   ⟨by simp [mul_comm, mul_left_comm]⟩
 #align subgroup.normal_of_comm Subgroup.normal_of_comm
 #align add_subgroup.normal_of_comm AddSubgroup.normal_of_comm
@@ -2093,7 +2093,7 @@ instance centerCharacteristic : (center G).Characteristic := by
 #align subgroup.center_characteristic Subgroup.centerCharacteristic
 #align add_subgroup.center_characteristic AddSubgroup.centerCharacteristic
 
-theorem _root_.CommGroup.center_eq_top {G : Type _} [CommGroup G] : center G = ⊤ := by
+theorem _root_.CommGroup.center_eq_top {G : Type*} [CommGroup G] : center G = ⊤ := by
   rw [eq_top_iff']
   intro x y
   exact mul_comm y x
@@ -2202,7 +2202,7 @@ theorem le_normalizer_of_normal [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) :
 #align subgroup.le_normalizer_of_normal Subgroup.le_normalizer_of_normal
 #align add_subgroup.le_normalizer_of_normal AddSubgroup.le_normalizer_of_normal
 
-variable {N : Type _} [Group N]
+variable {N : Type*} [Group N]
 
 /-- The preimage of the normalizer is contained in the normalizer of the preimage. -/
 @[to_additive "The preimage of the normalizer is contained in the normalizer of the preimage."]
@@ -2572,7 +2572,7 @@ end Subgroup
 
 namespace MonoidHom
 
-variable {N : Type _} {P : Type _} [Group N] [Group P] (K : Subgroup G)
+variable {N : Type*} {P : Type*} [Group N] [Group P] (K : Subgroup G)
 
 open Subgroup
 
@@ -2690,7 +2690,7 @@ theorem _root_.Subgroup.inclusion_range {H K : Subgroup G} (h_le : H ≤ K) :
 #align add_subgroup.inclusion_range AddSubgroup.inclusion_range
 
 @[to_additive]
-theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type _} [Group G₁] [Group G₂] {K : Subgroup G₂}
+theorem subgroupOf_range_eq_of_le {G₁ G₂ : Type*} [Group G₁] [Group G₂] {K : Subgroup G₂}
     (f : G₁ →* G₂) (h : f.range ≤ K) :
     f.range.subgroupOf K = (f.codRestrict K fun x => h ⟨x, rfl⟩).range := by
   ext k
@@ -2747,7 +2747,7 @@ theorem ofInjective_apply {f : G →* N} (hf : Function.Injective f) {x : G} :
 
 section Ker
 
-variable {M : Type _} [MulOneClass M]
+variable {M : Type*} [MulOneClass M]
 
 /-- The multiplicative kernel of a monoid homomorphism is the subgroup of elements `x : G` such that
 `f x = 1` -/
@@ -2859,7 +2859,7 @@ theorem _root_.Subgroup.ker_inclusion {H K : Subgroup G} (h : H ≤ K) : (inclus
 #align add_subgroup.ker_inclusion AddSubgroup.ker_inclusion
 
 @[to_additive]
-theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N)
+theorem prodMap_comap_prod {G' : Type*} {N' : Type*} [Group G'] [Group N'] (f : G →* N)
     (g : G' →* N') (S : Subgroup N) (S' : Subgroup N') :
     (S.prod S').comap (prodMap f g) = (S.comap f).prod (S'.comap g) :=
   SetLike.coe_injective <| Set.preimage_prod_map_prod f g _ _
@@ -2867,7 +2867,7 @@ theorem prodMap_comap_prod {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f
 #align add_monoid_hom.sum_map_comap_sum AddMonoidHom.sumMap_comap_sum
 
 @[to_additive]
-theorem ker_prodMap {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →* N) (g : G' →* N') :
+theorem ker_prodMap {G' : Type*} {N' : Type*} [Group G'] [Group N'] (f : G →* N) (g : G' →* N') :
     (prodMap f g).ker = f.ker.prod g.ker := by
   rw [← comap_bot, ← comap_bot, ← comap_bot, ← prodMap_comap_prod, bot_prod_bot]
 #align monoid_hom.ker_prod_map MonoidHom.ker_prodMap
@@ -2888,7 +2888,7 @@ end Ker
 
 section EqLocus
 
-variable {M : Type _} [Monoid M]
+variable {M : Type*} [Monoid M]
 
 /-- The subgroup of elements `x : G` such that `f x = g x` -/
 @[to_additive "The additive subgroup of elements `x : G` such that `f x = g x`"]
@@ -2947,7 +2947,7 @@ end MonoidHom
 
 namespace Subgroup
 
-variable {N : Type _} [Group N] (H : Subgroup G)
+variable {N : Type*} [Group N] (H : Subgroup G)
 
 @[to_additive]
 theorem Normal.map {H : Subgroup G} (h : H.Normal) (f : G →* N) (hf : Function.Surjective f) :
@@ -2976,7 +2976,7 @@ namespace Subgroup
 
 open MonoidHom
 
-variable {N : Type _} [Group N] (f : G →* N)
+variable {N : Type*} [Group N] (f : G →* N)
 
 @[to_additive]
 theorem map_le_range (H : Subgroup G) : map f H ≤ f.range :=
@@ -3216,7 +3216,7 @@ theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
 #align add_subgroup.comap_normalizer_eq_of_surjective AddSubgroup.comap_normalizer_eq_of_surjective
 
 @[to_additive]
-theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H : Subgroup G)
+theorem comap_normalizer_eq_of_injective_of_le_range {N : Type*} [Group N] (H : Subgroup G)
     {f : N →* G} (hf : Function.Injective f) (h : H.normalizer ≤ f.range) :
     comap f H.normalizer = (comap f H).normalizer := by
   apply Subgroup.map_injective hf
@@ -3269,7 +3269,7 @@ end Subgroup
 
 namespace MonoidHom
 
-variable {G₁ G₂ G₃ : Type _} [Group G₁] [Group G₂] [Group G₃]
+variable {G₁ G₂ G₃ : Type*} [Group G₁] [Group G₂] [Group G₃]
 
 variable (f : G₁ →* G₂) (f_inv : G₂ → G₁)
 
@@ -3383,7 +3383,7 @@ theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →
 
 end MonoidHom
 
-variable {N : Type _} [Group N]
+variable {N : Type*} [Group N]
 
 -- Here `H.Normal` is an explicit argument so we can use dot notation with `comap`.
 @[to_additive]
@@ -3494,7 +3494,7 @@ theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
 #align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquiv
 #align add_subgroup.equiv_map_of_injective_coe_add_equiv AddSubgroup.equivMapOfInjective_coe_addEquiv
 
-variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
+variable {C : Type*} [CommGroup C] {s t : Subgroup C} {x : C}
 
 @[to_additive]
 theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
@@ -3702,7 +3702,7 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
   exact subset_normalClosure (Set.mem_singleton _)
 #align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_of
 
-variable {M : Type _} [Monoid M]
+variable {M : Type*} [Monoid M]
 
 theorem eq_of_left_mem_center {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M) : g = h := by
   rcases H with ⟨u, hu⟩; rwa [← u.mul_left_inj, ← Hg u]
feat: basic facts about discrete subsets and subgroups (#5969)

Co-authored-by: Bhavik Mehta <bhavik.mehta8@gmail.com>

Diff
@@ -2642,6 +2642,10 @@ theorem rangeRestrict_surjective (f : G →* N) : Function.Surjective f.rangeRes
 #align monoid_hom.range_restrict_surjective MonoidHom.rangeRestrict_surjective
 #align add_monoid_hom.range_restrict_surjective AddMonoidHom.rangeRestrict_surjective
 
+@[to_additive (attr := simp)]
+lemma rangeRestrict_injective_iff {f : G →* N} : Injective f.rangeRestrict ↔ Injective f := by
+  convert Set.injective_codRestrict _
+
 @[to_additive]
 theorem map_range (g : N →* P) (f : G →* N) : f.range.map g = (g.comp f).range := by
   rw [range_eq_map, range_eq_map]; exact (⊤ : Subgroup G).map_map g f
feat(Algebra/Category/GroupCat/Abelian): prove AddCommGroupCat is AB5 (#5597)

This work was done during the 2023 Copenhagen masterclass on formalisation of condensed mathematics. Numerous participants contributed.

Co-authored-by: Moritz Firsching <moritz.firsching@gmail.com> Co-authored-by: Nikolas Kuhn <nikolaskuhn@gmx.de> Co-authored-by: Amelia Livingston <101damnations@github.com>

Co-authored-by: Markus Himmel <markus@himmel-villmar.de> Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: adamtopaz <github@adamtopaz.com> Co-authored-by: nick-kuhn <nikolaskuhn@gmx.de>

Diff
@@ -89,7 +89,7 @@ subgroup, subgroups
 open Function
 open Int
 
-variable {G G' : Type _} [Group G] [Group G']
+variable {G G' G'' : Type _} [Group G] [Group G'] [Group G'']
 
 variable {A : Type _} [AddGroup A]
 
@@ -2869,6 +2869,10 @@ theorem ker_prodMap {G' : Type _} {N' : Type _} [Group G'] [Group N'] (f : G →
 #align monoid_hom.ker_prod_map MonoidHom.ker_prodMap
 #align add_monoid_hom.ker_sum_map AddMonoidHom.ker_sumMap
 
+@[to_additive]
+theorem range_le_ker_iff (f : G →* G') (g : G' →* G'') : f.range ≤ g.ker ↔ g.comp f = 1 :=
+  ⟨fun h => ext fun x => h ⟨x, rfl⟩, by rintro h _ ⟨y, rfl⟩; exact FunLike.congr_fun h y⟩
+
 @[to_additive]
 instance (priority := 100) normal_ker (f : G →* M) : f.ker.Normal :=
   ⟨fun x hx y => by
chore(GroupTheory): forward-port leanprover-community/mathlib#18965 (#6147)
Diff
@@ -12,7 +12,7 @@ import Mathlib.Logic.Encodable.Basic
 import Mathlib.Order.Atoms
 import Mathlib.Tactic.ApplyFun
 
-#align_import group_theory.subgroup.basic from "leanprover-community/mathlib"@"d30d31261cdb4d2f5e612eabc3c4bf45556350d5"
+#align_import group_theory.subgroup.basic from "leanprover-community/mathlib"@"4be589053caf347b899a494da75410deb55fb3ef"
 
 /-!
 # Subgroups
@@ -2260,65 +2260,64 @@ end Normalizer
 
 section Centralizer
 
+variable {H}
+
 /-- The `centralizer` of `H` is the subgroup of `g : G` commuting with every `h : H`. -/
 @[to_additive
-      "The `centralizer` of `H` is the additive subgroup of `g : G` commuting with
-      every `h : H`."]
-def centralizer : Subgroup G :=
-  { Submonoid.centralizer (H : Set G) with
-    carrier := Set.centralizer H
+      "The `centralizer` of `H` is the additive subgroup of `g : G` commuting with\nevery `h : H`."]
+def centralizer (s : Set G) : Subgroup G :=
+  { Submonoid.centralizer s with
+    carrier := Set.centralizer s
     inv_mem' := Set.inv_mem_centralizer }
 #align subgroup.centralizer Subgroup.centralizer
 #align add_subgroup.centralizer AddSubgroup.centralizer
 
-variable {H}
-
 @[to_additive]
-theorem mem_centralizer_iff {g : G} : g ∈ H.centralizer ↔ ∀ h ∈ H, h * g = g * h :=
+theorem mem_centralizer_iff {g : G} {s : Set G} : g ∈ centralizer s ↔ ∀ h ∈ s, h * g = g * h :=
   Iff.rfl
 #align subgroup.mem_centralizer_iff Subgroup.mem_centralizer_iff
 #align add_subgroup.mem_centralizer_iff AddSubgroup.mem_centralizer_iff
 
 @[to_additive]
-theorem mem_centralizer_iff_commutator_eq_one {g : G} :
-    g ∈ H.centralizer ↔ ∀ h ∈ H, h * g * h⁻¹ * g⁻¹ = 1 := by
+theorem mem_centralizer_iff_commutator_eq_one {g : G} {s : Set G} :
+    g ∈ centralizer s ↔ ∀ h ∈ s, h * g * h⁻¹ * g⁻¹ = 1 := by
   simp only [mem_centralizer_iff, mul_inv_eq_iff_eq_mul, one_mul]
 #align subgroup.mem_centralizer_iff_commutator_eq_one Subgroup.mem_centralizer_iff_commutator_eq_one
 #align add_subgroup.mem_centralizer_iff_commutator_eq_zero AddSubgroup.mem_centralizer_iff_commutator_eq_zero
 
 @[to_additive]
-theorem centralizer_top : centralizer ⊤ = center G :=
+theorem centralizer_univ : centralizer Set.univ = center G :=
   SetLike.ext' (Set.centralizer_univ G)
-#align subgroup.centralizer_top Subgroup.centralizer_top
-#align add_subgroup.centralizer_top AddSubgroup.centralizer_top
+#align subgroup.centralizer_univ Subgroup.centralizer_univ
+#align add_subgroup.centralizer_univ AddSubgroup.centralizer_univ
 
 @[to_additive]
-theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
+theorem le_centralizer_iff : H ≤ centralizer K ↔ K ≤ centralizer H :=
   ⟨fun h x hx _y hy => (h hy x hx).symm, fun h x hx _y hy => (h hy x hx).symm⟩
 #align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
 #align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
 
 @[to_additive]
 theorem center_le_centralizer (s) : center G ≤ centralizer s :=
-  Set.center_subset_centralizer (s : Set G)
+  Set.center_subset_centralizer s
 #align subgroup.center_le_centralizer Subgroup.center_le_centralizer
 #align add_subgroup.center_le_centralizer AddSubgroup.center_le_centralizer
 
 @[to_additive]
-theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
+theorem centralizer_le {s t : Set G} (h : s ⊆ t) : centralizer t ≤ centralizer s :=
   Submonoid.centralizer_le h
 #align subgroup.centralizer_le Subgroup.centralizer_le
 #align add_subgroup.centralizer_le AddSubgroup.centralizer_le
 
 @[to_additive (attr := simp)]
-theorem centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
+theorem centralizer_eq_top_iff_subset {s : Set G} : centralizer s = ⊤ ↔ s ⊆ center G :=
   SetLike.ext'_iff.trans Set.centralizer_eq_top_iff_subset
 #align subgroup.centralizer_eq_top_iff_subset Subgroup.centralizer_eq_top_iff_subset
 #align add_subgroup.centralizer_eq_top_iff_subset AddSubgroup.centralizer_eq_top_iff_subset
 
 @[to_additive]
 instance Centralizer.characteristic [hH : H.Characteristic] :
-    H.centralizer.Characteristic := by
+    (centralizer (H : Set G)).Characteristic := by
   refine' Subgroup.characteristic_iff_comap_le.mpr fun ϕ g hg h hh => ϕ.injective _
   rw [map_mul, map_mul]
   exact hg (ϕ h) (Subgroup.characteristic_iff_le_comap.mp hH ϕ hh)
@@ -2384,14 +2383,14 @@ instance subgroupOf_isCommutative [H.IsCommutative] : (H.subgroupOf K).IsCommuta
 #align add_subgroup.add_subgroup_of_is_commutative AddSubgroup.addSubgroupOf_isCommutative
 
 @[to_additive]
-theorem le_centralizer_iff_isCommutative : K ≤ K.centralizer ↔ K.IsCommutative :=
+theorem le_centralizer_iff_isCommutative : K ≤ centralizer K ↔ K.IsCommutative :=
   ⟨fun h => ⟨⟨fun x y => Subtype.ext (h y.2 x x.2)⟩⟩,
     fun h x hx y hy => congr_arg Subtype.val (h.1.1 ⟨y, hy⟩ ⟨x, hx⟩)⟩
 #align subgroup.le_centralizer_iff_is_commutative Subgroup.le_centralizer_iff_isCommutative
 #align add_subgroup.le_centralizer_iff_is_commutative AddSubgroup.le_centralizer_iff_isCommutative
 
 @[to_additive]
-theorem le_centralizer [h : H.IsCommutative] : H ≤ H.centralizer :=
+theorem le_centralizer [h : H.IsCommutative] : H ≤ centralizer H :=
   le_centralizer_iff_isCommutative.mpr h
 #align subgroup.le_centralizer Subgroup.le_centralizer
 #align add_subgroup.le_centralizer AddSubgroup.le_centralizer
chore: fix grammar mistakes (#6121)
Diff
@@ -3454,7 +3454,7 @@ def subgroupCongr (h : H = K) : H ≃* K :=
 /-- A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
 use `Subgroup.equiv_map_of_injective`. -/
 @[to_additive
-      "An additive subgroup is isomorphic to its image under an an isomorphism. If you only
+      "An additive subgroup is isomorphic to its image under an isomorphism. If you only
       have an injective map, use `AddSubgroup.equiv_map_of_injective`."]
 def subgroupMap (e : G ≃* G') (H : Subgroup G) : H ≃* H.map (e : G →* G') :=
   MulEquiv.submonoidMap (e : G ≃* G') H.toSubmonoid
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,11 +2,6 @@
 Copyright (c) 2020 Kexing Ying. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
-
-! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit d30d31261cdb4d2f5e612eabc3c4bf45556350d5
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Group.Conj
 import Mathlib.Algebra.Module.Basic
@@ -17,6 +12,8 @@ import Mathlib.Logic.Encodable.Basic
 import Mathlib.Order.Atoms
 import Mathlib.Tactic.ApplyFun
 
+#align_import group_theory.subgroup.basic from "leanprover-community/mathlib"@"d30d31261cdb4d2f5e612eabc3c4bf45556350d5"
+
 /-!
 # Subgroups
 
fix: precedences of ⨆⋃⋂⨅ (#5614)
Diff
@@ -1270,7 +1270,7 @@ theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥
 
 @[to_additive]
 theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
-    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
+    ⨆ i, p i = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
 #align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
 #align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
 
@@ -1527,7 +1527,7 @@ theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
 
 @[to_additive]
 theorem iSup_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
-    (⨆ i, (s i).comap f) ≤ (iSup s).comap f :=
+    ⨆ i, (s i).comap f ≤ (iSup s).comap f :=
   Monotone.le_map_iSup fun _ _ => comap_mono
 #align subgroup.supr_comap_le Subgroup.iSup_comap_le
 #align add_subgroup.supr_comap_le AddSubgroup.iSup_comap_le
chore: forward port #18862 (#5497)
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit cc67cd75b4e54191e13c2e8d722289a89e67e4fa
+! leanprover-community/mathlib commit d30d31261cdb4d2f5e612eabc3c4bf45556350d5
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -3698,6 +3698,16 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
   exact subset_normalClosure (Set.mem_singleton _)
 #align is_conj.normal_closure_eq_top_of IsConj.normalClosure_eq_top_of
 
+variable {M : Type _} [Monoid M]
+
+theorem eq_of_left_mem_center {g h : M} (H : IsConj g h) (Hg : g ∈ Set.center M) : g = h := by
+  rcases H with ⟨u, hu⟩; rwa [← u.mul_left_inj, ← Hg u]
+#align is_conj.eq_of_left_mem_center IsConj.eq_of_left_mem_center
+
+theorem eq_of_right_mem_center {g h : M} (H : IsConj g h) (Hh : h ∈ Set.center M) : g = h :=
+  (H.symm.eq_of_left_mem_center Hh).symm
+#align is_conj.eq_of_right_mem_center IsConj.eq_of_right_mem_center
+
 end IsConj
 
 assert_not_exists Multiset
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -3128,7 +3128,7 @@ theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.Lef
 @[to_additive "Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`."]
 theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
     (hf : map f H = map f K) : H = K := by
-  apply_fun comap f  at hf
+  apply_fun comap f at hf
   rwa [comap_map_eq, comap_map_eq, sup_of_le_left hH, sup_of_le_left hK] at hf
 #align subgroup.map_injective_of_ker_le Subgroup.map_injective_of_ker_le
 #align add_subgroup.map_injective_of_ker_le AddSubgroup.map_injective_of_ker_le
chore: add @[simp] uniformly to _top_of_surjective lemmas (#5064)

Some such lemmas are already labelled @[simp], and this PR adds @[simp] to the remaining ones.

It's useful for some automation I'm writing to have these all in simp.

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

Diff
@@ -2660,7 +2660,8 @@ theorem range_top_iff_surjective {N} [Group N] {f : G →* N} :
 #align add_monoid_hom.range_top_iff_surjective AddMonoidHom.range_top_iff_surjective
 
 /-- The range of a surjective monoid homomorphism is the whole of the codomain. -/
-@[to_additive "The range of a surjective `AddMonoid` homomorphism is the whole of the codomain."]
+@[to_additive (attr := simp)
+  "The range of a surjective `AddMonoid` homomorphism is the whole of the codomain."]
 theorem range_top_of_surjective {N} [Group N] (f : G →* N) (hf : Function.Surjective f) :
     f.range = (⊤ : Subgroup N) :=
   range_top_iff_surjective.2 hf
chore: fix grammar 2/3 (#5002)

Part 2 of #5001

Diff
@@ -196,7 +196,7 @@ theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H :=
 namespace SubgroupClass
 
 /-- A subgroup of a group inherits an inverse. -/
-@[to_additive "An additive subgroup of a `add_group` inherits an inverse."]
+@[to_additive "An additive subgroup of an `AddGroup` inherits an inverse."]
 instance inv {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
   [SubgroupClass S G] {H : S} : Inv H :=
   ⟨fun a => ⟨a⁻¹, inv_mem a.2⟩⟩
@@ -204,7 +204,7 @@ instance inv {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
 #align add_subgroup_class.has_neg AddSubgroupClass.neg
 
 /-- A subgroup of a group inherits a division -/
-@[to_additive "An additive subgroup of an `add_group` inherits a subtraction."]
+@[to_additive "An additive subgroup of an `AddGroup` inherits a subtraction."]
 instance div {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
   [SubgroupClass S G] {H : S} : Div H :=
   ⟨fun a b => ⟨a / b, div_mem a.2 b.2⟩⟩
@@ -308,7 +308,7 @@ theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = (x : G) ^ n :=
 #align add_subgroup_class.coe_zsmul AddSubgroupClass.coe_zsmul
 
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
-@[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
+@[to_additive "The inclusion homomorphism from an additive subgroup `H` contained in `K` to `K`."]
 def inclusion {H K : S} (h : H ≤ K) : H →* K :=
   MonoidHom.mk' (fun x => ⟨x, h x.prop⟩) fun _ _=> rfl
 #align subgroup_class.inclusion SubgroupClass.inclusion
@@ -664,7 +664,7 @@ instance one : One H :=
 #align add_subgroup.has_zero AddSubgroup.zero
 
 /-- A subgroup of a group inherits an inverse. -/
-@[to_additive "A `AddSubgroup` of a `AddGroup` inherits an inverse."]
+@[to_additive "An `AddSubgroup` of an `AddGroup` inherits an inverse."]
 instance inv : Inv H :=
   ⟨fun a => ⟨a⁻¹, H.inv_mem a.2⟩⟩
 #align subgroup.has_inv Subgroup.inv
@@ -804,7 +804,7 @@ theorem subtype_injective : Function.Injective (Subgroup.subtype H) :=
 #align add_subgroup.subtype_injective AddSubgroup.subtype_injective
 
 /-- The inclusion homomorphism from a subgroup `H` contained in `K` to `K`. -/
-@[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
+@[to_additive "The inclusion homomorphism from an additive subgroup `H` contained in `K` to `K`."]
 def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
   MonoidHom.mk' (fun x => ⟨x, h x.2⟩) fun _ _ => rfl
 #align subgroup.inclusion Subgroup.inclusion
@@ -850,7 +850,7 @@ def topEquiv : (⊤ : Subgroup G) ≃* G :=
 #align add_subgroup.top_equiv_symm_apply_coe AddSubgroup.topEquiv_symm_apply_coe
 #align add_subgroup.top_equiv_apply AddSubgroup.topEquiv_apply
 
-/-- The trivial subgroup `{1}` of an group `G`. -/
+/-- The trivial subgroup `{1}` of a group `G`. -/
 @[to_additive "The trivial `AddSubgroup` `{0}` of an `AddGroup` `G`."]
 instance : Bot (Subgroup G) :=
   ⟨{ (⊥ : Submonoid G) with inv_mem' := by simp}⟩
@@ -959,7 +959,7 @@ theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (
 #align add_subgroup.bot_or_exists_ne_zero AddSubgroup.bot_or_exists_ne_zero
 
 /-- The inf of two subgroups is their intersection. -/
-@[to_additive "The inf of two `add_subgroups`s is their intersection."]
+@[to_additive "The inf of two `AddSubgroup`s is their intersection."]
 instance : Inf (Subgroup G) :=
   ⟨fun H₁ H₂ =>
     { H₁.toSubmonoid ⊓ H₂.toSubmonoid with
@@ -1975,7 +1975,7 @@ namespace AddSubgroup
 
 variable (H : AddSubgroup A)
 
-/-- A add_subgroup is characteristic if it is fixed by all automorphisms.
+/-- An `AddSubgroup` is characteristic if it is fixed by all automorphisms.
   Several equivalent conditions are provided by lemmas of the form `Characteristic.iff...` -/
 structure Characteristic : Prop where
   /-- `H` is fixed by all automorphisms -/
@@ -3422,7 +3422,7 @@ def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
 #align monoid_hom.subgroup_comap_apply_coe MonoidHom.subgroupComap_apply_coe
 
 /-- The `MonoidHom` from a subgroup to its image. -/
-@[to_additive (attr := simps!) "the `add_monoid_hom` from an additive subgroup to its image"]
+@[to_additive (attr := simps!) "the `AddMonoidHom` from an additive subgroup to its image"]
 def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
   f.submonoidMap H.toSubmonoid
 #align monoid_hom.subgroup_map MonoidHom.subgroupMap
chore: fix many typos (#4983)

These are all doc fixes

Diff
@@ -2330,7 +2330,7 @@ instance Centralizer.characteristic [hH : H.Characteristic] :
 
 end Centralizer
 
-/-- Commutivity of a subgroup -/
+/-- Commutativity of a subgroup -/
 structure IsCommutative : Prop where
   /-- `*` is commutative on `H` -/
   is_comm : IsCommutative H (· * ·)
@@ -2338,7 +2338,7 @@ structure IsCommutative : Prop where
 
 attribute [class] IsCommutative
 
-/-- Commutivity of an additive subgroup -/
+/-- Commutativity of an additive subgroup -/
 structure _root_.AddSubgroup.IsCommutative (H : AddSubgroup A) : Prop where
   /-- `+` is commutative on `H` -/
   is_comm : _root_.IsCommutative H (· + ·)
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -108,7 +108,7 @@ export InvMemClass (inv_mem)
 
 /-- `NegMemClass S G` states `S` is a type of subsets `s ⊆ G` closed under negation. -/
 class NegMemClass (S G : Type _) [Neg G] [SetLike S G] : Prop where
-/-- `s` is closed under negation -/
+  /-- `s` is closed under negation -/
   neg_mem : ∀ {s : S} {x}, x ∈ s → -x ∈ s
 #align neg_mem_class NegMemClass
 
@@ -370,7 +370,7 @@ structure Subgroup (G : Type _) [Group G] extends Submonoid G where
 /-- An additive subgroup of an additive group `G` is a subset containing 0, closed
 under addition and additive inverse. -/
 structure AddSubgroup (G : Type _) [AddGroup G] extends AddSubmonoid G where
-/-- `G` is closed under negation -/
+  /-- `G` is closed under negation -/
   neg_mem' {x} : x ∈ carrier → -x ∈ carrier
 #align add_subgroup AddSubgroup
 
@@ -3509,7 +3509,7 @@ theorem mem_sup : x ∈ s ⊔ t ↔ ∃ y ∈ s, ∃ z ∈ t, y * z = x :=
 #align add_subgroup.mem_sup AddSubgroup.mem_sup
 
 @[to_additive]
-theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s)(z : t), (y : C) * z = x :=
+theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s) (z : t), (y : C) * z = x :=
   mem_sup.trans <| by simp only [SetLike.exists, coe_mk, exists_prop]
 #align subgroup.mem_sup' Subgroup.mem_sup'
 #align add_subgroup.mem_sup' AddSubgroup.mem_sup'
@@ -3613,7 +3613,7 @@ theorem SubgroupNormal.mem_comm {H K : Subgroup G} (hK : H ≤ K) [hN : (H.subgr
 /-- Elements of disjoint, normal subgroups commute. -/
 @[to_additive "Elements of disjoint, normal subgroups commute."]
 theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Normal) (hH₂ : H₂.Normal)
--- Porting note: Goal was `Commute x y`. Removed ambiguity.
+    -- Porting note: Goal was `Commute x y`. Removed ambiguity.
     (hdis : Disjoint H₁ H₂) (x y : G) (hx : x ∈ H₁) (hy : y ∈ H₂) : _root_.Commute x y := by
   suffices x * y * x⁻¹ * y⁻¹ = 1 by
     show x * y = y * x
chore: fix many typos (#4967)

These are all doc fixes

Diff
@@ -736,7 +736,7 @@ theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = (x : G) ^ n :=
 #align subgroup.coe_pow Subgroup.coe_pow
 #align add_subgroup.coe_nsmul AddSubgroup.coe_nsmul
 
-@[to_additive (attr := norm_cast)] -- Porting note: dsimp can provce this
+@[to_additive (attr := norm_cast)] -- Porting note: dsimp can prove this
 theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = (x : G) ^ n :=
   rfl
 #align subgroup.coe_zpow Subgroup.coe_zpow
@@ -2253,7 +2253,7 @@ theorem _root_.normalizerCondition_iff_only_full_group_self_normalizing :
 
 variable (H)
 
-/-- In a group that satisifes the normalizer condition, every maximal subgroup is normal -/
+/-- In a group that satisfies the normalizer condition, every maximal subgroup is normal -/
 theorem NormalizerCondition.normal_of_coatom (hnc : NormalizerCondition G) (hmax : IsCoatom H) :
     H.Normal :=
   normalizer_eq_top.mp (hmax.2 _ (hnc H (lt_top_iff_ne_top.mpr hmax.1)))
chore: port leanprover-community/mathlib#18861 (#4896)

I forgot to put some required to_additives in Lean3, I am currently backporting this change in leanprover-community/mathlib#19168.

Co-authored-by: Eric Rodriguez <37984851+ericrbg@users.noreply.github.com>

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit 6b60020790e39e77bfd633ba3d5562ff82e52c79
+! leanprover-community/mathlib commit cc67cd75b4e54191e13c2e8d722289a89e67e4fa
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -2301,12 +2301,24 @@ theorem le_centralizer_iff : H ≤ K.centralizer ↔ K ≤ H.centralizer :=
 #align subgroup.le_centralizer_iff Subgroup.le_centralizer_iff
 #align add_subgroup.le_centralizer_iff AddSubgroup.le_centralizer_iff
 
+@[to_additive]
+theorem center_le_centralizer (s) : center G ≤ centralizer s :=
+  Set.center_subset_centralizer (s : Set G)
+#align subgroup.center_le_centralizer Subgroup.center_le_centralizer
+#align add_subgroup.center_le_centralizer AddSubgroup.center_le_centralizer
+
 @[to_additive]
 theorem centralizer_le (h : H ≤ K) : centralizer K ≤ centralizer H :=
   Submonoid.centralizer_le h
 #align subgroup.centralizer_le Subgroup.centralizer_le
 #align add_subgroup.centralizer_le AddSubgroup.centralizer_le
 
+@[to_additive (attr := simp)]
+theorem centralizer_eq_top_iff_subset {s} : centralizer s = ⊤ ↔ s ≤ center G :=
+  SetLike.ext'_iff.trans Set.centralizer_eq_top_iff_subset
+#align subgroup.centralizer_eq_top_iff_subset Subgroup.centralizer_eq_top_iff_subset
+#align add_subgroup.centralizer_eq_top_iff_subset AddSubgroup.centralizer_eq_top_iff_subset
+
 @[to_additive]
 instance Centralizer.characteristic [hH : H.Characteristic] :
     H.centralizer.Characteristic := by
chore: add space after exacts (#4945)

Too often tempted to change these during other PRs, so doing a mass edit here.

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

Diff
@@ -3159,7 +3159,7 @@ theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
 theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
     Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) := by
   rw [codisjoint_iff, sup_subgroupOf_eq, subgroupOf_self]
-  exacts[le_sup_left, le_sup_right]
+  exacts [le_sup_left, le_sup_right]
 #align subgroup.codisjoint_subgroup_of_sup Subgroup.codisjoint_subgroupOf_sup
 #align add_subgroup.codisjoint_add_subgroup_of_sup AddSubgroup.codisjoint_addSubgroupOf_sup
 
style: allow _ for an argument in notation3 & replace _foo with _ in notation3 (#4652)
Diff
@@ -2488,7 +2488,7 @@ theorem normalClosure_mono {s t : Set G} (h : s ⊆ t) : normalClosure s ≤ nor
 
 -- Porting note: the elaborator trips up on using underscores for names in `⨅`
 theorem normalClosure_eq_iInf :
-    normalClosure s = ⨅ (N : Subgroup G) (_hN : Normal N) (_hs : s ⊆ N), N :=
+    normalClosure s = ⨅ (N : Subgroup G) (_ : Normal N) (_ : s ⊆ N), N :=
   le_antisymm (le_iInf fun N => le_iInf fun hN => le_iInf normalClosure_le_normal)
     (iInf_le_of_le (normalClosure s)
       (iInf_le_of_le (by infer_instance) (iInf_le_of_le subset_normalClosure le_rfl)))
@@ -2543,7 +2543,7 @@ theorem normalCore_mono {H K : Subgroup G} (h : H ≤ K) : H.normalCore ≤ K.no
 #align subgroup.normal_core_mono Subgroup.normalCore_mono
 
 theorem normalCore_eq_iSup (H : Subgroup G) :
-    H.normalCore = ⨆ (N : Subgroup G) (_hN : Normal N) (_hs : N ≤ H), N :=
+    H.normalCore = ⨆ (N : Subgroup G) (_ : Normal N) (_ : N ≤ H), N :=
   le_antisymm
     (le_iSup_of_le H.normalCore
       (le_iSup_of_le H.normalCore_normal (le_iSup_of_le H.normalCore_le le_rfl)))
refactor: use the typeclass SProd to implement overloaded notation · ×ˢ · (#4200)

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

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

Diff
@@ -1706,7 +1706,8 @@ def prod (H : Subgroup G) (K : Subgroup N) : Subgroup (G × N) :=
 #align add_subgroup.prod AddSubgroup.prod
 
 @[to_additive coe_prod]
-theorem coe_prod (H : Subgroup G) (K : Subgroup N) : (H.prod K : Set (G × N)) = H ×ˢ K :=
+theorem coe_prod (H : Subgroup G) (K : Subgroup N) :
+    (H.prod K : Set (G × N)) = (H : Set G) ×ˢ (K : Set N) :=
   rfl
 #align subgroup.coe_prod Subgroup.coe_prod
 #align add_subgroup.coe_prod AddSubgroup.coe_prod
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -211,7 +211,7 @@ instance div {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
 #align subgroup_class.has_div SubgroupClass.div
 #align add_subgroup_class.has_sub AddSubgroupClass.sub
 
-/-- An additive subgroup of an `add_group` inherits an integer scaling. -/
+/-- An additive subgroup of an `AddGroup` inherits an integer scaling. -/
 instance _root_.AddSubgroupClass.zsmul {M S} [SubNegMonoid M] [SetLike S M]
     [AddSubgroupClass S M] {H : S} : SMul ℤ H :=
   ⟨fun n a => ⟨n • a.1, zsmul_mem a.2 n⟩⟩
feat: assert_not_exists (#4245)
Diff
@@ -3686,4 +3686,4 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
 
 end IsConj
 
--- assert_not_exists Multiset
+assert_not_exists Multiset
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supₛsSup
  • infₛsInf
  • supᵢiSup
  • infᵢiInf
  • bsupₛbsSup
  • binfₛbsInf
  • bsupᵢbiSup
  • binfᵢbiInf
  • csupₛcsSup
  • cinfₛcsInf
  • csupᵢciSup
  • cinfᵢciInf
  • unionₛsUnion
  • interₛsInter
  • unionᵢiUnion
  • interᵢiInter
  • bunionₛbsUnion
  • binterₛbsInter
  • bunionᵢbiUnion
  • binterᵢbiInter

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -982,37 +982,37 @@ instance : InfSet (Subgroup G) :=
   ⟨fun s =>
     { (⨅ S ∈ s, Subgroup.toSubmonoid S).copy (⋂ S ∈ s, ↑S) (by simp) with
       inv_mem' := fun {x} hx =>
-        Set.mem_binterᵢ fun i h => i.inv_mem (by apply Set.mem_interᵢ₂.1 hx i h) }⟩
+        Set.mem_biInter fun i h => i.inv_mem (by apply Set.mem_iInter₂.1 hx i h) }⟩
 
 @[to_additive (attr := simp, norm_cast)]
-theorem coe_infₛ (H : Set (Subgroup G)) : ((infₛ H : Subgroup G) : Set G) = ⋂ s ∈ H, ↑s :=
+theorem coe_sInf (H : Set (Subgroup G)) : ((sInf H : Subgroup G) : Set G) = ⋂ s ∈ H, ↑s :=
   rfl
-#align subgroup.coe_Inf Subgroup.coe_infₛ
-#align add_subgroup.coe_Inf AddSubgroup.coe_infₛ
+#align subgroup.coe_Inf Subgroup.coe_sInf
+#align add_subgroup.coe_Inf AddSubgroup.coe_sInf
 
 @[to_additive (attr := simp)]
-theorem mem_infₛ {S : Set (Subgroup G)} {x : G} : x ∈ infₛ S ↔ ∀ p ∈ S, x ∈ p :=
-  Set.mem_interᵢ₂
-#align subgroup.mem_Inf Subgroup.mem_infₛ
-#align add_subgroup.mem_Inf AddSubgroup.mem_infₛ
+theorem mem_sInf {S : Set (Subgroup G)} {x : G} : x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p :=
+  Set.mem_iInter₂
+#align subgroup.mem_Inf Subgroup.mem_sInf
+#align add_subgroup.mem_Inf AddSubgroup.mem_sInf
 
 @[to_additive]
-theorem mem_infᵢ {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
-  simp only [infᵢ, mem_infₛ, Set.forall_range_iff]
-#align subgroup.mem_infi Subgroup.mem_infᵢ
-#align add_subgroup.mem_infi AddSubgroup.mem_infᵢ
+theorem mem_iInf {ι : Sort _} {S : ι → Subgroup G} {x : G} : (x ∈ ⨅ i, S i) ↔ ∀ i, x ∈ S i := by
+  simp only [iInf, mem_sInf, Set.forall_range_iff]
+#align subgroup.mem_infi Subgroup.mem_iInf
+#align add_subgroup.mem_infi AddSubgroup.mem_iInf
 
 @[to_additive (attr := simp, norm_cast)]
-theorem coe_infᵢ {ι : Sort _} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
-  simp only [infᵢ, coe_infₛ, Set.binterᵢ_range]
-#align subgroup.coe_infi Subgroup.coe_infᵢ
-#align add_subgroup.coe_infi AddSubgroup.coe_infᵢ
+theorem coe_iInf {ι : Sort _} {S : ι → Subgroup G} : (↑(⨅ i, S i) : Set G) = ⋂ i, S i := by
+  simp only [iInf, coe_sInf, Set.biInter_range]
+#align subgroup.coe_infi Subgroup.coe_iInf
+#align add_subgroup.coe_infi AddSubgroup.coe_iInf
 
 /-- Subgroups of a group form a complete lattice. -/
 @[to_additive "The `AddSubgroup`s of an `AddGroup` form a complete lattice."]
 instance : CompleteLattice (Subgroup G) :=
   { completeLatticeOfInf (Subgroup G) fun _s =>
-      IsGLB.of_image SetLike.coe_subset_coe isGLB_binfᵢ with
+      IsGLB.of_image SetLike.coe_subset_coe isGLB_biInf with
     bot := ⊥
     bot_le := fun S _x hx => (mem_bot.1 hx).symm ▸ S.one_mem
     top := ⊤
@@ -1041,18 +1041,18 @@ theorem mul_mem_sup {S T : Subgroup G} {x y : G} (hx : x ∈ S) (hy : y ∈ T) :
 #align add_subgroup.add_mem_sup AddSubgroup.add_mem_sup
 
 @[to_additive]
-theorem mem_supᵢ_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
-    ∀ {x : G}, x ∈ S i → x ∈ supᵢ S :=
-  have : S i ≤ supᵢ S := le_supᵢ _ _; fun h ↦ this h
-#align subgroup.mem_supr_of_mem Subgroup.mem_supᵢ_of_mem
-#align add_subgroup.mem_supr_of_mem AddSubgroup.mem_supᵢ_of_mem
+theorem mem_iSup_of_mem {ι : Sort _} {S : ι → Subgroup G} (i : ι) :
+    ∀ {x : G}, x ∈ S i → x ∈ iSup S :=
+  have : S i ≤ iSup S := le_iSup _ _; fun h ↦ this h
+#align subgroup.mem_supr_of_mem Subgroup.mem_iSup_of_mem
+#align add_subgroup.mem_supr_of_mem AddSubgroup.mem_iSup_of_mem
 
 @[to_additive]
-theorem mem_supₛ_of_mem {S : Set (Subgroup G)} {s : Subgroup G} (hs : s ∈ S) :
-    ∀ {x : G}, x ∈ s → x ∈ supₛ S :=
-  have : s ≤ supₛ S := le_supₛ hs; fun h ↦ this h
-#align subgroup.mem_Sup_of_mem Subgroup.mem_supₛ_of_mem
-#align add_subgroup.mem_Sup_of_mem AddSubgroup.mem_supₛ_of_mem
+theorem mem_sSup_of_mem {S : Set (Subgroup G)} {s : Subgroup G} (hs : s ∈ S) :
+    ∀ {x : G}, x ∈ s → x ∈ sSup S :=
+  have : s ≤ sSup S := le_sSup hs; fun h ↦ this h
+#align subgroup.mem_Sup_of_mem Subgroup.mem_sSup_of_mem
+#align add_subgroup.mem_Sup_of_mem AddSubgroup.mem_sSup_of_mem
 
 @[to_additive (attr := simp)]
 theorem subsingleton_iff : Subsingleton (Subgroup G) ↔ Subsingleton G :=
@@ -1090,7 +1090,7 @@ theorem eq_top_iff' : H = ⊤ ↔ ∀ x : G, x ∈ H :=
 /-- The `Subgroup` generated by a set. -/
 @[to_additive "The `AddSubgroup` generated by a set"]
 def closure (k : Set G) : Subgroup G :=
-  infₛ { K | k ⊆ K }
+  sInf { K | k ⊆ K }
 #align subgroup.closure Subgroup.closure
 #align add_subgroup.closure AddSubgroup.closure
 
@@ -1098,7 +1098,7 @@ variable {k : Set G}
 
 @[to_additive]
 theorem mem_closure {x : G} : x ∈ closure k ↔ ∀ K : Subgroup G, k ⊆ K → x ∈ K :=
-  mem_infₛ
+  mem_sInf
 #align subgroup.mem_closure Subgroup.mem_closure
 #align add_subgroup.mem_closure AddSubgroup.mem_closure
 
@@ -1120,7 +1120,7 @@ open Set
 @[to_additive (attr := simp)
   "An additive subgroup `K` includes `closure k` if and only if it includes `k`"]
 theorem closure_le : closure k ≤ K ↔ k ⊆ K :=
-  ⟨Subset.trans subset_closure, fun h => infₛ_le h⟩
+  ⟨Subset.trans subset_closure, fun h => sInf_le h⟩
 #align subgroup.closure_le Subgroup.closure_le
 #align add_subgroup.closure_le AddSubgroup.closure_le
 
@@ -1256,10 +1256,10 @@ theorem closure_union (s t : Set G) : closure (s ∪ t) = closure s ⊔ closure
 #align add_subgroup.closure_union AddSubgroup.closure_union
 
 @[to_additive]
-theorem closure_unionᵢ {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, closure (s i) :=
-  (Subgroup.gi G).gc.l_supᵢ
-#align subgroup.closure_Union Subgroup.closure_unionᵢ
-#align add_subgroup.closure_Union AddSubgroup.closure_unionᵢ
+theorem closure_iUnion {ι} (s : ι → Set G) : closure (⋃ i, s i) = ⨆ i, closure (s i) :=
+  (Subgroup.gi G).gc.l_iSup
+#align subgroup.closure_Union Subgroup.closure_iUnion
+#align add_subgroup.closure_Union AddSubgroup.closure_iUnion
 
 @[to_additive]
 theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥ ↔ S ⊆ {1} := by
@@ -1269,10 +1269,10 @@ theorem closure_eq_bot_iff (G : Type _) [Group G] (S : Set G) : closure S = ⊥
 #align add_subgroup.closure_eq_bot_iff AddSubgroup.closure_eq_bot_iff
 
 @[to_additive]
-theorem supᵢ_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
-    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_unionᵢ, closure_eq]
-#align subgroup.supr_eq_closure Subgroup.supᵢ_eq_closure
-#align add_subgroup.supr_eq_closure AddSubgroup.supᵢ_eq_closure
+theorem iSup_eq_closure {ι : Sort _} (p : ι → Subgroup G) :
+    (⨆ i, p i) = closure (⋃ i, (p i : Set G)) := by simp_rw [closure_iUnion, closure_eq]
+#align subgroup.supr_eq_closure Subgroup.iSup_eq_closure
+#align add_subgroup.supr_eq_closure AddSubgroup.iSup_eq_closure
 
 /-- The subgroup generated by an element of a group equals the set of integer number powers of
     the element. -/
@@ -1314,36 +1314,36 @@ theorem closure_eq_top_of_mclosure_eq_top {S : Set G} (h : Submonoid.closure S =
 #align add_subgroup.closure_eq_top_of_mclosure_eq_top AddSubgroup.closure_eq_top_of_mclosure_eq_top
 
 @[to_additive]
-theorem mem_supᵢ_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
-    {x : G} : x ∈ (supᵢ K : Subgroup G) ↔ ∃ i, x ∈ K i := by
-  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_supᵢ K i) hi⟩
+theorem mem_iSup_of_directed {ι} [hι : Nonempty ι] {K : ι → Subgroup G} (hK : Directed (· ≤ ·) K)
+    {x : G} : x ∈ (iSup K : Subgroup G) ↔ ∃ i, x ∈ K i := by
+  refine' ⟨_, fun ⟨i, hi⟩ => (SetLike.le_def.1 <| le_iSup K i) hi⟩
   suffices x ∈ closure (⋃ i, (K i : Set G)) → ∃ i, x ∈ K i by
-    simpa only [closure_unionᵢ, closure_eq (K _)] using this
-  refine' fun hx => closure_induction hx (fun _ => mem_unionᵢ.1) _ _ _
+    simpa only [closure_iUnion, closure_eq (K _)] using this
+  refine' fun hx => closure_induction hx (fun _ => mem_iUnion.1) _ _ _
   · exact hι.elim fun i => ⟨i, (K i).one_mem⟩
   · rintro x y ⟨i, hi⟩ ⟨j, hj⟩
     rcases hK i j with ⟨k, hki, hkj⟩
     exact ⟨k, mul_mem (hki hi) (hkj hj)⟩
   rintro _ ⟨i, hi⟩
   exact ⟨i, inv_mem hi⟩
-#align subgroup.mem_supr_of_directed Subgroup.mem_supᵢ_of_directed
-#align add_subgroup.mem_supr_of_directed AddSubgroup.mem_supᵢ_of_directed
+#align subgroup.mem_supr_of_directed Subgroup.mem_iSup_of_directed
+#align add_subgroup.mem_supr_of_directed AddSubgroup.mem_iSup_of_directed
 
 @[to_additive]
-theorem coe_supᵢ_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
+theorem coe_iSup_of_directed {ι} [Nonempty ι] {S : ι → Subgroup G} (hS : Directed (· ≤ ·) S) :
     ((⨆ i, S i : Subgroup G) : Set G) = ⋃ i, ↑(S i) :=
-  Set.ext fun x => by simp [mem_supᵢ_of_directed hS]
-#align subgroup.coe_supr_of_directed Subgroup.coe_supᵢ_of_directed
-#align add_subgroup.coe_supr_of_directed AddSubgroup.coe_supᵢ_of_directed
+  Set.ext fun x => by simp [mem_iSup_of_directed hS]
+#align subgroup.coe_supr_of_directed Subgroup.coe_iSup_of_directed
+#align add_subgroup.coe_supr_of_directed AddSubgroup.coe_iSup_of_directed
 
 @[to_additive]
-theorem mem_supₛ_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
-    {x : G} : x ∈ supₛ K ↔ ∃ s ∈ K, x ∈ s := by
+theorem mem_sSup_of_directedOn {K : Set (Subgroup G)} (Kne : K.Nonempty) (hK : DirectedOn (· ≤ ·) K)
+    {x : G} : x ∈ sSup K ↔ ∃ s ∈ K, x ∈ s := by
   haveI : Nonempty K := Kne.to_subtype
-  simp only [supₛ_eq_supᵢ', mem_supᵢ_of_directed hK.directed_val, SetCoe.exists, Subtype.coe_mk,
+  simp only [sSup_eq_iSup', mem_iSup_of_directed hK.directed_val, SetCoe.exists, Subtype.coe_mk,
     exists_prop]
-#align subgroup.mem_Sup_of_directed_on Subgroup.mem_supₛ_of_directedOn
-#align add_subgroup.mem_Sup_of_directed_on AddSubgroup.mem_supₛ_of_directedOn
+#align subgroup.mem_Sup_of_directed_on Subgroup.mem_sSup_of_directedOn
+#align add_subgroup.mem_Sup_of_directed_on AddSubgroup.mem_sSup_of_directedOn
 
 variable {N : Type _} [Group N] {P : Type _} [Group P]
 
@@ -1512,11 +1512,11 @@ theorem map_sup (H K : Subgroup G) (f : G →* N) : (H ⊔ K).map f = H.map f 
 #align add_subgroup.map_sup AddSubgroup.map_sup
 
 @[to_additive]
-theorem map_supᵢ {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
-    (supᵢ s).map f = ⨆ i, (s i).map f :=
-  (gc_map_comap f).l_supᵢ
-#align subgroup.map_supr Subgroup.map_supᵢ
-#align add_subgroup.map_supr AddSubgroup.map_supᵢ
+theorem map_iSup {ι : Sort _} (f : G →* N) (s : ι → Subgroup G) :
+    (iSup s).map f = ⨆ i, (s i).map f :=
+  (gc_map_comap f).l_iSup
+#align subgroup.map_supr Subgroup.map_iSup
+#align add_subgroup.map_supr AddSubgroup.map_iSup
 
 @[to_additive]
 theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
@@ -1526,11 +1526,11 @@ theorem comap_sup_comap_le (H K : Subgroup N) (f : G →* N) :
 #align add_subgroup.comap_sup_comap_le AddSubgroup.comap_sup_comap_le
 
 @[to_additive]
-theorem supᵢ_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
-    (⨆ i, (s i).comap f) ≤ (supᵢ s).comap f :=
-  Monotone.le_map_supᵢ fun _ _ => comap_mono
-#align subgroup.supr_comap_le Subgroup.supᵢ_comap_le
-#align add_subgroup.supr_comap_le AddSubgroup.supᵢ_comap_le
+theorem iSup_comap_le {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
+    (⨆ i, (s i).comap f) ≤ (iSup s).comap f :=
+  Monotone.le_map_iSup fun _ _ => comap_mono
+#align subgroup.supr_comap_le Subgroup.iSup_comap_le
+#align add_subgroup.supr_comap_le AddSubgroup.iSup_comap_le
 
 @[to_additive]
 theorem comap_inf (H K : Subgroup N) (f : G →* N) : (H ⊓ K).comap f = H.comap f ⊓ K.comap f :=
@@ -1539,11 +1539,11 @@ theorem comap_inf (H K : Subgroup N) (f : G →* N) : (H ⊓ K).comap f = H.coma
 #align add_subgroup.comap_inf AddSubgroup.comap_inf
 
 @[to_additive]
-theorem comap_infᵢ {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
-    (infᵢ s).comap f = ⨅ i, (s i).comap f :=
-  (gc_map_comap f).u_infᵢ
-#align subgroup.comap_infi Subgroup.comap_infᵢ
-#align add_subgroup.comap_infi AddSubgroup.comap_infᵢ
+theorem comap_iInf {ι : Sort _} (f : G →* N) (s : ι → Subgroup N) :
+    (iInf s).comap f = ⨅ i, (s i).comap f :=
+  (gc_map_comap f).u_iInf
+#align subgroup.comap_infi Subgroup.comap_iInf
+#align add_subgroup.comap_infi AddSubgroup.comap_iInf
 
 @[to_additive]
 theorem map_inf_le (H K : Subgroup G) (f : G →* N) : map f (H ⊓ K) ≤ map f H ⊓ map f K :=
@@ -2399,7 +2399,7 @@ def conjugatesOfSet (s : Set G) : Set G :=
 #align group.conjugates_of_set Group.conjugatesOfSet
 
 theorem mem_conjugatesOfSet_iff {x : G} : x ∈ conjugatesOfSet s ↔ ∃ a ∈ s, IsConj a x := by
-  erw [Set.mem_unionᵢ₂]; simp only [conjugatesOf, isConj_iff, Set.mem_setOf_eq, exists_prop]
+  erw [Set.mem_iUnion₂]; simp only [conjugatesOf, isConj_iff, Set.mem_setOf_eq, exists_prop]
 #align group.mem_conjugates_of_set_iff Group.mem_conjugatesOfSet_iff
 
 theorem subset_conjugatesOfSet : s ⊆ conjugatesOfSet s := fun (x : G) (h : x ∈ s) =>
@@ -2407,7 +2407,7 @@ theorem subset_conjugatesOfSet : s ⊆ conjugatesOfSet s := fun (x : G) (h : x 
 #align group.subset_conjugates_of_set Group.subset_conjugatesOfSet
 
 theorem conjugatesOfSet_mono {s t : Set G} (h : s ⊆ t) : conjugatesOfSet s ⊆ conjugatesOfSet t :=
-  Set.bunionᵢ_subset_bunionᵢ_left h
+  Set.biUnion_subset_biUnion_left h
 #align group.conjugates_of_set_mono Group.conjugatesOfSet_mono
 
 theorem conjugates_subset_normal {N : Subgroup G} [tn : N.Normal] {a : G} (h : a ∈ N) :
@@ -2419,7 +2419,7 @@ theorem conjugates_subset_normal {N : Subgroup G} [tn : N.Normal] {a : G} (h : a
 
 theorem conjugatesOfSet_subset {s : Set G} {N : Subgroup G} [N.Normal] (h : s ⊆ N) :
     conjugatesOfSet s ⊆ N :=
-  Set.unionᵢ₂_subset fun _x H => conjugates_subset_normal (h H)
+  Set.iUnion₂_subset fun _x H => conjugates_subset_normal (h H)
 #align group.conjugates_of_set_subset Group.conjugatesOfSet_subset
 
 /-- The set of conjugates of `s` is closed under conjugation. -/
@@ -2486,12 +2486,12 @@ theorem normalClosure_mono {s t : Set G} (h : s ⊆ t) : normalClosure s ≤ nor
 #align subgroup.normal_closure_mono Subgroup.normalClosure_mono
 
 -- Porting note: the elaborator trips up on using underscores for names in `⨅`
-theorem normalClosure_eq_infᵢ :
+theorem normalClosure_eq_iInf :
     normalClosure s = ⨅ (N : Subgroup G) (_hN : Normal N) (_hs : s ⊆ N), N :=
-  le_antisymm (le_infᵢ fun N => le_infᵢ fun hN => le_infᵢ normalClosure_le_normal)
-    (infᵢ_le_of_le (normalClosure s)
-      (infᵢ_le_of_le (by infer_instance) (infᵢ_le_of_le subset_normalClosure le_rfl)))
-#align subgroup.normal_closure_eq_infi Subgroup.normalClosure_eq_infᵢ
+  le_antisymm (le_iInf fun N => le_iInf fun hN => le_iInf normalClosure_le_normal)
+    (iInf_le_of_le (normalClosure s)
+      (iInf_le_of_le (by infer_instance) (iInf_le_of_le subset_normalClosure le_rfl)))
+#align subgroup.normal_closure_eq_infi Subgroup.normalClosure_eq_iInf
 
 @[simp]
 theorem normalClosure_eq_self (H : Subgroup G) [H.Normal] : normalClosure ↑H = H :=
@@ -2514,7 +2514,7 @@ theorem normalClosure_closure_eq_normalClosure {s : Set G} :
 #align subgroup.normal_closure_closure_eq_normal_closure Subgroup.normalClosure_closure_eq_normalClosure
 
 /-- The normal core of a subgroup `H` is the largest normal subgroup of `G` contained in `H`,
-as shown by `Subgroup.normalCore_eq_supᵢ`. -/
+as shown by `Subgroup.normalCore_eq_iSup`. -/
 def normalCore (H : Subgroup G) : Subgroup G where
   carrier := { a : G | ∀ b : G, b * a * b⁻¹ ∈ H }
   one_mem' a := by rw [mul_one, mul_inv_self]; exact H.one_mem
@@ -2541,13 +2541,13 @@ theorem normalCore_mono {H K : Subgroup G} (h : H ≤ K) : H.normalCore ≤ K.no
   normal_le_normalCore.mpr (H.normalCore_le.trans h)
 #align subgroup.normal_core_mono Subgroup.normalCore_mono
 
-theorem normalCore_eq_supᵢ (H : Subgroup G) :
+theorem normalCore_eq_iSup (H : Subgroup G) :
     H.normalCore = ⨆ (N : Subgroup G) (_hN : Normal N) (_hs : N ≤ H), N :=
   le_antisymm
-    (le_supᵢ_of_le H.normalCore
-      (le_supᵢ_of_le H.normalCore_normal (le_supᵢ_of_le H.normalCore_le le_rfl)))
-    (supᵢ_le fun _ => supᵢ_le fun _ => supᵢ_le normal_le_normalCore.mpr)
-#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_supᵢ
+    (le_iSup_of_le H.normalCore
+      (le_iSup_of_le H.normalCore_normal (le_iSup_of_le H.normalCore_le le_rfl)))
+    (iSup_le fun _ => iSup_le fun _ => iSup_le normal_le_normalCore.mpr)
+#align subgroup.normal_core_eq_supr Subgroup.normalCore_eq_iSup
 
 @[simp]
 theorem normalCore_eq_self (H : Subgroup G) [H.Normal] : H.normalCore = H :=
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
@@ -1174,8 +1174,7 @@ theorem closure_induction₂ {p : G → G → Prop} {x} {y : G} (hx : x ∈ clos
 @[to_additive (attr := simp)]
 theorem closure_closure_coe_preimage {k : Set G} : closure (((↑) : closure k → G) ⁻¹' k) = ⊤ :=
   eq_top_iff.2 fun x =>
-    Subtype.recOn x fun x hx _ =>
-      by
+    Subtype.recOn x fun x hx _ => by
       refine' closure_induction' (fun g hg => _) _ (fun g₁ g₂ hg₁ hg₂ => _) (fun g hg => _) hx
       · exact subset_closure hg
       · exact one_mem _
@@ -1483,8 +1482,8 @@ theorem comap_equiv_eq_map_symm (f : N ≃* G) (K : Subgroup G) :
 #align add_subgroup.comap_equiv_eq_map_symm AddSubgroup.comap_equiv_eq_map_symm
 
 @[to_additive]
-theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} : H.map ↑e.symm = K ↔ K.map ↑e = H :=
-  by
+theorem map_symm_eq_iff_map_eq {H : Subgroup N} {e : G ≃* N} :
+    H.map ↑e.symm = K ↔ K.map ↑e = H := by
   constructor <;> rintro rfl
   · rw [map_map, ← MulEquiv.coe_monoidHom_trans, MulEquiv.symm_trans_self,
       MulEquiv.coe_monoidHom_refl, map_id]
@@ -1851,8 +1850,7 @@ theorem pi_empty (H : ∀ i, Subgroup (f i)) : pi ∅ H = ⊤ :=
 
 @[to_additive]
 theorem pi_bot : (pi Set.univ fun i => (⊥ : Subgroup (f i))) = ⊥ :=
-  (eq_bot_iff_forall _).mpr fun p hp =>
-    by
+  (eq_bot_iff_forall _).mpr fun p hp => by
     simp only [mem_pi, mem_bot] at *
     ext j
     exact hp j trivial
@@ -2210,8 +2208,8 @@ variable {N : Type _} [Group N]
 
 /-- The preimage of the normalizer is contained in the normalizer of the preimage. -/
 @[to_additive "The preimage of the normalizer is contained in the normalizer of the preimage."]
-theorem le_normalizer_comap (f : N →* G) : H.normalizer.comap f ≤ (H.comap f).normalizer := fun x =>
-  by
+theorem le_normalizer_comap (f : N →* G) :
+    H.normalizer.comap f ≤ (H.comap f).normalizer := fun x => by
   simp only [mem_normalizer_iff, mem_comap]
   intro h n
   simp [h (f n)]
@@ -2459,8 +2457,7 @@ theorem le_normalClosure {H : Subgroup G} : H ≤ normalClosure ↑H := fun _ h
 
 /-- The normal closure of `s` is a normal subgroup. -/
 instance normalClosure_normal : (normalClosure s).Normal :=
-  ⟨fun n h g =>
-    by
+  ⟨fun n h g => by
     refine' Subgroup.closure_induction h (fun x hx => _) _ (fun x y ihx ihy => _) fun x ihx => _
     · exact conjugatesOfSet_subset_normalClosure (conj_mem_conjugatesOfSet hx)
     · simpa using (normalClosure s).one_mem
@@ -2721,8 +2718,7 @@ theorem ofLeftInverse_symm_apply {f : G →* N} {g : N →* G} (h : Function.Lef
 domain."]
 noncomputable def ofInjective {f : G →* N} (hf : Function.Injective f) : G ≃* f.range :=
   MulEquiv.ofBijective (f.codRestrict f.range fun x => ⟨x, rfl⟩)
-    ⟨fun x y h => hf (Subtype.ext_iff.mp h),
-      by
+    ⟨fun x y h => hf (Subtype.ext_iff.mp h), by
       rintro ⟨x, y, rfl⟩
       exact ⟨y, rfl⟩⟩
 #align monoid_hom.of_injective MonoidHom.ofInjective
@@ -3669,12 +3665,10 @@ theorem normalClosure_eq_top_of {N : Subgroup G} [hn : N.Normal] {g g' : G} {hg
     {hg' : g' ∈ N} (hc : IsConj g g') (ht : normalClosure ({⟨g, hg⟩} : Set N) = ⊤) :
     normalClosure ({⟨g', hg'⟩} : Set N) = ⊤ := by
   obtain ⟨c, rfl⟩ := isConj_iff.1 hc
-  have h : ∀ x : N, (MulAut.conj c) x ∈ N :=
-    by
+  have h : ∀ x : N, (MulAut.conj c) x ∈ N := by
     rintro ⟨x, hx⟩
     exact hn.conj_mem _ hx c
-  have hs : Function.Surjective (((MulAut.conj c).toMonoidHom.restrict N).codRestrict _ h) :=
-    by
+  have hs : Function.Surjective (((MulAut.conj c).toMonoidHom.restrict N).codRestrict _ h) := by
     rintro ⟨x, hx⟩
     refine' ⟨⟨c⁻¹ * x * c, _⟩, _⟩
     · have h := hn.conj_mem _ hx c⁻¹
Diff
@@ -2596,8 +2596,8 @@ theorem range_eq_map (f : G →* N) : f.range = (⊤ : Subgroup G).map f := by e
 
 @[to_additive (attr := simp)]
 theorem restrict_range (f : G →* N) : (f.restrict K).range = K.map f := by
-  simp_rw [SetLike.ext_iff, mem_range, mem_map, restrict_apply, SetLike.exists, Subtype.coe_mk,
-    iff_self_iff, forall_const, exists_prop, forall_const]
+  simp_rw [SetLike.ext_iff, mem_range, mem_map, restrict_apply, SetLike.exists,
+    exists_prop, forall_const]
 #align monoid_hom.restrict_range MonoidHom.restrict_range
 #align add_monoid_hom.restrict_range AddMonoidHom.restrict_range
 
@@ -3509,7 +3509,7 @@ theorem mem_sup' : x ∈ s ⊔ t ↔ ∃ (y : s)(z : t), (y : C) * z = x :=
 theorem mem_closure_pair {x y z : C} :
     z ∈ closure ({x, y} : Set C) ↔ ∃ m n : ℤ, x ^ m * y ^ n = z := by
   rw [← Set.singleton_union, Subgroup.closure_union, mem_sup]
-  simp_rw [exists_prop, mem_closure_singleton, exists_exists_eq_and]
+  simp_rw [mem_closure_singleton, exists_exists_eq_and]
 #align subgroup.mem_closure_pair Subgroup.mem_closure_pair
 #align add_subgroup.mem_closure_pair AddSubgroup.mem_closure_pair
 
chore: fix #align lines (#3640)

This PR fixes two things:

  • Most align statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align). This is often seen in the mathport output after ending calc blocks.
  • All remaining more-than-one-line #align statements. (This was needed for a script I wrote for #3630.)
Diff
@@ -276,12 +276,8 @@ instance (priority := 75) toLinearOrderedCommGroup {G : Type _} [LinearOrderedCo
     [SetLike S G] [SubgroupClass S G] : LinearOrderedCommGroup H :=
   Subtype.coe_injective.linearOrderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl)
     (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
-#align
-  subgroup_class.to_linear_ordered_comm_group
-  SubgroupClass.toLinearOrderedCommGroup
-#align
-  add_subgroup_class.to_linear_ordered_add_comm_group
-  AddSubgroupClass.toLinearOrderedAddCommGroup
+#align subgroup_class.to_linear_ordered_comm_group SubgroupClass.toLinearOrderedCommGroup
+#align add_subgroup_class.to_linear_ordered_add_comm_group AddSubgroupClass.toLinearOrderedAddCommGroup
 
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive (attr := coe)
@@ -811,7 +807,6 @@ theorem subtype_injective : Function.Injective (Subgroup.subtype H) :=
 @[to_additive "The inclusion homomorphism from a additive subgroup `H` contained in `K` to `K`."]
 def inclusion {H K : Subgroup G} (h : H ≤ K) : H →* K :=
   MonoidHom.mk' (fun x => ⟨x, h x.2⟩) fun _ _ => rfl
-
 #align subgroup.inclusion Subgroup.inclusion
 #align add_subgroup.inclusion AddSubgroup.inclusion
 
@@ -2255,9 +2250,7 @@ theorem _root_.normalizerCondition_iff_only_full_group_self_normalizing :
   apply forall_congr'; intro H
   simp only [lt_iff_le_and_ne, le_normalizer, true_and_iff, le_top, Ne.def]
   tauto
-#align
-  normalizer_condition_iff_only_full_group_self_normalizing
-  normalizerCondition_iff_only_full_group_self_normalizing
+#align normalizer_condition_iff_only_full_group_self_normalizing normalizerCondition_iff_only_full_group_self_normalizing
 
 variable (H)
 
@@ -2295,9 +2288,7 @@ theorem mem_centralizer_iff_commutator_eq_one {g : G} :
     g ∈ H.centralizer ↔ ∀ h ∈ H, h * g * h⁻¹ * g⁻¹ = 1 := by
   simp only [mem_centralizer_iff, mul_inv_eq_iff_eq_mul, one_mul]
 #align subgroup.mem_centralizer_iff_commutator_eq_one Subgroup.mem_centralizer_iff_commutator_eq_one
-#align
-  add_subgroup.mem_centralizer_iff_commutator_eq_zero
-  AddSubgroup.mem_centralizer_iff_commutator_eq_zero
+#align add_subgroup.mem_centralizer_iff_commutator_eq_zero AddSubgroup.mem_centralizer_iff_commutator_eq_zero
 
 @[to_additive]
 theorem centralizer_top : centralizer ⊤ = center G :=
@@ -2323,12 +2314,8 @@ instance Centralizer.characteristic [hH : H.Characteristic] :
   refine' Subgroup.characteristic_iff_comap_le.mpr fun ϕ g hg h hh => ϕ.injective _
   rw [map_mul, map_mul]
   exact hg (ϕ h) (Subgroup.characteristic_iff_le_comap.mp hH ϕ hh)
-#align
-  subgroup.subgroup.centralizer.characteristic
-  Subgroup.Centralizer.characteristic
-#align
-  add_subgroup.subgroup.centralizer.characteristic
-  AddSubgroup.Centralizer.characteristic
+#align subgroup.subgroup.centralizer.characteristic Subgroup.Centralizer.characteristic
+#align add_subgroup.subgroup.centralizer.characteristic AddSubgroup.Centralizer.characteristic
 
 end Centralizer
 
@@ -2460,9 +2447,7 @@ def normalClosure (s : Set G) : Subgroup G :=
 
 theorem conjugatesOfSet_subset_normalClosure : conjugatesOfSet s ⊆ normalClosure s :=
   subset_closure
-#align
-  subgroup.conjugates_of_set_subset_normal_closure
-  Subgroup.conjugatesOfSet_subset_normalClosure
+#align subgroup.conjugates_of_set_subset_normal_closure Subgroup.conjugatesOfSet_subset_normalClosure
 
 theorem subset_normalClosure : s ⊆ normalClosure s :=
   Set.Subset.trans subset_conjugatesOfSet conjugatesOfSet_subset_normalClosure
@@ -2529,9 +2514,7 @@ theorem closure_le_normalClosure {s : Set G} : closure s ≤ normalClosure s :=
 theorem normalClosure_closure_eq_normalClosure {s : Set G} :
     normalClosure ↑(closure s) = normalClosure s :=
   le_antisymm (normalClosure_le_normal closure_le_normalClosure) (normalClosure_mono subset_closure)
-#align
-  subgroup.normal_closure_closure_eq_normal_closure
-  Subgroup.normalClosure_closure_eq_normalClosure
+#align subgroup.normal_closure_closure_eq_normal_closure Subgroup.normalClosure_closure_eq_normalClosure
 
 /-- The normal core of a subgroup `H` is the largest normal subgroup of `G` contained in `H`,
 as shown by `Subgroup.normalCore_eq_supᵢ`. -/
@@ -3229,12 +3212,8 @@ theorem comap_normalizer_eq_of_injective_of_le_range {N : Type _} [Group N] (H :
     rw [map_comap_eq_self h]
   · refine' le_trans (le_normalizer_map f) (le_of_eq _)
     rw [map_comap_eq_self (le_trans le_normalizer h)]
-#align
-  subgroup.comap_normalizer_eq_of_injective_of_le_range
-  Subgroup.comap_normalizer_eq_of_injective_of_le_range
-#align
-  add_subgroup.comap_normalizer_eq_of_injective_of_le_range
-  AddSubgroup.comap_normalizer_eq_of_injective_of_le_range
+#align subgroup.comap_normalizer_eq_of_injective_of_le_range Subgroup.comap_normalizer_eq_of_injective_of_le_range
+#align add_subgroup.comap_normalizer_eq_of_injective_of_le_range AddSubgroup.comap_normalizer_eq_of_injective_of_le_range
 
 @[to_additive]
 theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
@@ -3303,12 +3282,8 @@ theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g
   apply hg
   rw [f.mem_ker, f.map_mul, f.map_inv, mul_inv_eq_one]
   simp only [hf _]
-#align
-  monoid_hom.lift_of_right_inverse_aux_comp_apply
-  MonoidHom.liftOfRightInverseAux_comp_apply
-#align
-  add_monoid_hom.lift_of_right_inverse_aux_comp_apply
-  AddMonoidHom.liftOfRightInverseAux_comp_apply
+#align monoid_hom.lift_of_right_inverse_aux_comp_apply MonoidHom.liftOfRightInverseAux_comp_apply
+#align add_monoid_hom.lift_of_right_inverse_aux_comp_apply AddMonoidHom.liftOfRightInverseAux_comp_apply
 
 /-- `liftOfRightInverse f hf g hg` is the unique group homomorphism `φ`
 
@@ -3503,9 +3478,7 @@ theorem equivMapOfInjective_coe_mulEquiv (H : Subgroup G) (e : G ≃* G') :
   ext
   rfl
 #align subgroup.equiv_map_of_injective_coe_mul_equiv Subgroup.equivMapOfInjective_coe_mulEquiv
-#align
-  add_subgroup.equiv_map_of_injective_coe_add_equiv
-  AddSubgroup.equivMapOfInjective_coe_addEquiv
+#align add_subgroup.equiv_map_of_injective_coe_add_equiv AddSubgroup.equivMapOfInjective_coe_addEquiv
 
 variable {C : Type _} [CommGroup C] {s t : Subgroup C} {x : C}
 
@@ -3590,12 +3563,8 @@ theorem inf_subgroupOf_inf_normal_of_right (A B' B : Subgroup G) (hB : B' ≤ B)
       ⟨mul_mem (mul_mem (mem_inf.1 g.2).1 (mem_inf.1 n.2).1) $
         show ↑g⁻¹ ∈ A from (inv_mem (mem_inf.1 g.2).1),
         (normal_subgroupOf_iff hB).mp hN n g hn.2 (mem_inf.mp g.2).2⟩ }
-#align
-  subgroup.inf_subgroup_of_inf_normal_of_right
-  Subgroup.inf_subgroupOf_inf_normal_of_right
-#align
-  add_subgroup.inf_add_subgroup_of_inf_normal_of_right
-  AddSubgroup.inf_addSubgroupOf_inf_normal_of_right
+#align subgroup.inf_subgroup_of_inf_normal_of_right Subgroup.inf_subgroupOf_inf_normal_of_right
+#align add_subgroup.inf_add_subgroup_of_inf_normal_of_right AddSubgroup.inf_addSubgroupOf_inf_normal_of_right
 
 @[to_additive]
 theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (hA : A' ≤ A)
@@ -3605,9 +3574,7 @@ theorem inf_subgroupOf_inf_normal_of_left {A' A : Subgroup G} (B : Subgroup G) (
         mul_mem (mul_mem (mem_inf.1 g.2).2 (mem_inf.1 n.2).2) $
         show ↑g⁻¹ ∈ B from (inv_mem (mem_inf.1 g.2).2)⟩ }
 #align subgroup.inf_subgroup_of_inf_normal_of_left Subgroup.inf_subgroupOf_inf_normal_of_left
-#align
-  add_subgroup.inf_add_subgroup_of_inf_normal_of_left
-  AddSubgroup.inf_addSubgroupOf_inf_normal_of_left
+#align add_subgroup.inf_add_subgroup_of_inf_normal_of_left AddSubgroup.inf_addSubgroupOf_inf_normal_of_left
 
 @[to_additive]
 instance normal_inf_normal (H K : Subgroup G) [hH : H.Normal] [hK : K.Normal] : (H ⊓ K).Normal :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
+! leanprover-community/mathlib commit 6b60020790e39e77bfd633ba3d5562ff82e52c79
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -286,13 +286,13 @@ instance (priority := 75) toLinearOrderedCommGroup {G : Type _} [LinearOrderedCo
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive (attr := coe)
   "The natural group hom from an additive subgroup of `AddGroup` `G` to `G`."]
-def subtype : H →* G :=
+protected def subtype : H →* G :=
   ⟨⟨((↑) : H → G), rfl⟩, fun _ _ => rfl⟩
 #align subgroup_class.subtype SubgroupClass.subtype
 #align add_subgroup_class.subtype AddSubgroupClass.subtype
 
 @[to_additive (attr := simp)]
-theorem coeSubtype : (subtype H : H → G) = ((↑) : H → G) := by
+theorem coeSubtype : (SubgroupClass.subtype H : H → G) = ((↑) : H → G) := by
   rfl
 #align subgroup_class.coe_subtype SubgroupClass.coeSubtype
 #align add_subgroup_class.coe_subtype AddSubgroupClass.coeSubtype
@@ -354,7 +354,7 @@ theorem coe_inclusion {H K : S} {h : H ≤ K} (a : H) : (inclusion h a : G) = a
 
 @[to_additive (attr := simp)]
 theorem subtype_comp_inclusion {H K : S} (hH : H ≤ K) :
-    (subtype K).comp (inclusion hH) = subtype H := by
+    (SubgroupClass.subtype K).comp (inclusion hH) = SubgroupClass.subtype H := by
   ext
   simp only [MonoidHom.comp_apply, coeSubtype, coe_inclusion]
 #align subgroup_class.subtype_comp_inclusion SubgroupClass.subtype_comp_inclusion
@@ -790,7 +790,7 @@ instance toLinearOrderedCommGroup {G : Type _} [LinearOrderedCommGroup G] (H : S
 
 /-- The natural group hom from a subgroup of group `G` to `G`. -/
 @[to_additive "The natural group hom from an `AddSubgroup` of `AddGroup` `G` to `G`."]
-def subtype : H →* G :=
+protected def subtype : H →* G :=
   ⟨⟨((↑) : H → G), rfl⟩, fun _ _ => rfl⟩
 #align subgroup.subtype Subgroup.subtype
 #align add_subgroup.subtype AddSubgroup.subtype
@@ -802,7 +802,7 @@ theorem coeSubtype : ⇑ H.subtype = ((↑) : H → G) :=
 #align add_subgroup.coe_subtype AddSubgroup.coeSubtype
 
 @[to_additive]
-theorem subtype_injective : Function.Injective (subtype H) :=
+theorem subtype_injective : Function.Injective (Subgroup.subtype H) :=
   Subtype.coe_injective
 #align subgroup.subtype_injective Subgroup.subtype_injective
 #align add_subgroup.subtype_injective AddSubgroup.subtype_injective
feat: initialize_simps_projections automatically finds coercions (#2045)
  • initialize_simps_projections automatically find coercions if there is a Funlike or SetLike instance defined by one of the projections.
  • Some improvements compared to Lean 3:
    • Find coercions even if it is defined by a field of a parent structure
    • Find SetLike coercions

Not yet implemented (and rarely - if ever - used in mathlib3):

  • Automatic custom projections for algebraic notation (like +,*,...)

Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -435,17 +435,7 @@ theorem mk_le_mk {s t : Set G} (h_one) (h_mul) (h_inv) (h_one') (h_mul') (h_inv'
 #align subgroup.mk_le_mk Subgroup.mk_le_mk
 #align add_subgroup.mk_le_mk AddSubgroup.mk_le_mk
 
-/-- See Note [custom simps projection] -/
---@[to_additive "See Note [custom simps projection]"]
--- Porting note: temporarily removed brackets to not confuse syntax highlighting
-@[to_additive "See Note custom simps projection "]
-def Simps.coe (S : Subgroup G) : Set G :=
-  S
-#align subgroup.simps.coe Subgroup.Simps.coe
-#align add_subgroup.simps.coe AddSubgroup.Simps.coe
-
 initialize_simps_projections Subgroup (carrier → coe)
-
 initialize_simps_projections AddSubgroup (carrier → coe)
 
 @[to_additive (attr := simp)]
feat: port Topology.Instances.Real (#2633)

I generalized some lemmas from additive subgroups of the real numbers to additive subgroups of an archimedean additive group.

Diff
@@ -134,6 +134,10 @@ theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G]
 #align inv_mem_iff inv_mem_iff
 #align neg_mem_iff neg_mem_iff
 
+@[simp] theorem abs_mem_iff {S G} [InvolutiveNeg G] [LinearOrder G] {_ : SetLike S G}
+    [NegMemClass S G] {H : S} {x : G} : |x| ∈ H ↔ x ∈ H := by
+  cases abs_choice x <;> simp [*]
+
 variable {M S : Type _} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
 
 /-- A subgroup is closed under division. -/
Fix: Move more attributes to the attr argument of to_additive (#2558)
Diff
@@ -1144,8 +1144,7 @@ theorem closure_eq_of_le (h₁ : k ⊆ K) (h₂ : K ≤ closure k) : closure k =
 /-- An induction principle for closure membership. If `p` holds for `1` and all elements of `k`, and
 is preserved under multiplication and inverse, then `p` holds for all elements of the closure
 of `k`. -/
-@[elab_as_elim,
-  to_additive
+@[to_additive (attr := elab_as_elim)
       "An induction principle for additive closure membership. If `p`
       holds for `0` and all elements of `k`, and is preserved under addition and inverses, then `p`
       holds for all elements of the additive closure of `k`."]
@@ -1156,7 +1155,7 @@ theorem closure_induction {p : G → Prop} {x} (h : x ∈ closure k) (Hk : ∀ x
 #align add_subgroup.closure_induction AddSubgroup.closure_induction
 
 /-- A dependent version of `Subgroup.closure_induction`.  -/
-@[elab_as_elim, to_additive "A dependent version of `AddSubgroup.closure_induction`. "]
+@[to_additive (attr := elab_as_elim) "A dependent version of `AddSubgroup.closure_induction`. "]
 theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
     (Hs : ∀ (x) (h : x ∈ k), p x (subset_closure h)) (H1 : p 1 (one_mem _))
     (Hmul : ∀ x hx y hy, p x hx → p y hy → p (x * y) (mul_mem hx hy))
@@ -1169,8 +1168,7 @@ theorem closure_induction' {p : ∀ x, x ∈ closure k → Prop}
 #align add_subgroup.closure_induction' AddSubgroup.closure_induction'
 
 /-- An induction principle for closure membership for predicates with two arguments. -/
-@[elab_as_elim,
-  to_additive
+@[to_additive (attr := elab_as_elim)
       "An induction principle for additive closure membership, for
       predicates with two arguments."]
 theorem closure_induction₂ {p : G → G → Prop} {x} {y : G} (hx : x ∈ closure k) (hy : y ∈ closure k)
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kexing Ying
 
 ! This file was ported from Lean 3 source module group_theory.subgroup.basic
-! leanprover-community/mathlib commit 1f0096e6caa61e9c849ec2adbd227e960e9dff58
+! leanprover-community/mathlib commit c10e724be91096453ee3db13862b9fb9a992fef2
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -127,6 +127,13 @@ class AddSubgroupClass (S G : Type _) [SubNegMonoid G] [SetLike S G] extends Add
 
 attribute [to_additive] InvMemClass SubgroupClass
 
+@[to_additive (attr := simp)]
+theorem inv_mem_iff {S G} [InvolutiveInv G] {_ : SetLike S G} [InvMemClass S G] {H : S}
+    {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
+  ⟨fun h => inv_inv x ▸ inv_mem h, inv_mem⟩
+#align inv_mem_iff inv_mem_iff
+#align neg_mem_iff neg_mem_iff
+
 variable {M S : Type _} [DivInvMonoid M] [SetLike S M] [hSM : SubgroupClass S M] {H K : S}
 
 /-- A subgroup is closed under division. -/
@@ -149,15 +156,9 @@ theorem zpow_mem {x : M} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K
 
 variable [SetLike S G] [SubgroupClass S G]
 
-@[to_additive (attr := simp)]
-theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H :=
-  ⟨fun h => inv_inv x ▸ inv_mem h, inv_mem⟩
-#align inv_mem_iff inv_mem_iff
-#align neg_mem_iff neg_mem_iff
-
 @[to_additive]
-theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H := by
-  rw [← inv_mem_iff, div_eq_mul_inv, div_eq_mul_inv, mul_inv_rev, inv_inv]
+theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H :=
+  inv_div b a ▸ inv_mem_iff
 #align div_mem_comm_iff div_mem_comm_iff
 #align sub_mem_comm_iff sub_mem_comm_iff
 
@@ -2170,7 +2171,7 @@ theorem mem_normalizer_iff {g : G} : g ∈ H.normalizer ↔ ∀ h, h ∈ H ↔ g
 
 @[to_additive]
 theorem mem_normalizer_iff'' {g : G} : g ∈ H.normalizer ↔ ∀ h : G, h ∈ H ↔ g⁻¹ * h * g ∈ H := by
-  rw [← inv_mem_iff, mem_normalizer_iff, inv_inv]
+  rw [← inv_mem_iff (x := g), mem_normalizer_iff, inv_inv]
 #align subgroup.mem_normalizer_iff'' Subgroup.mem_normalizer_iff''
 #align add_subgroup.mem_normalizer_iff'' AddSubgroup.mem_normalizer_iff''
 
fix: replace symmApply by symm_apply (#2560)
Diff
@@ -507,7 +507,7 @@ def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G) where
   right_inv x := by cases x; rfl
   map_rel_iff' := Iff.rfl
 #align subgroup.to_add_subgroup Subgroup.toAddSubgroup
-#align subgroup.to_add_subgroup_symm_apply_coe Subgroup.toAddSubgroup_symmApply_coe
+#align subgroup.to_add_subgroup_symm_apply_coe Subgroup.toAddSubgroup_symm_apply_coe
 #align subgroup.to_add_subgroup_apply_coe Subgroup.toAddSubgroup_apply_coe
 
 /-- Additive subgroup of an additive group `Additive G` are isomorphic to subgroup of `G`. -/
@@ -526,7 +526,7 @@ def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A) wher
   map_rel_iff' := Iff.rfl
 #align add_subgroup.to_subgroup AddSubgroup.toSubgroup
 #align add_subgroup.to_subgroup_apply_coe AddSubgroup.toSubgroup_apply_coe
-#align add_subgroup.to_subgroup_symm_apply_coe AddSubgroup.toSubgroup_symmApply_coe
+#align add_subgroup.to_subgroup_symm_apply_coe AddSubgroup.toSubgroup_symm_apply_coe
 
 /-- Subgroups of an additive group `Multiplicative A` are isomorphic to additive subgroups of `A`.
 -/
@@ -856,8 +856,8 @@ def topEquiv : (⊤ : Subgroup G) ≃* G :=
   Submonoid.topEquiv
 #align subgroup.top_equiv Subgroup.topEquiv
 #align add_subgroup.top_equiv AddSubgroup.topEquiv
-#align subgroup.top_equiv_symm_apply_coe Subgroup.topEquiv_symmApply_coe
-#align add_subgroup.top_equiv_symm_apply_coe AddSubgroup.topEquiv_symmApply_coe
+#align subgroup.top_equiv_symm_apply_coe Subgroup.topEquiv_symm_apply_coe
+#align add_subgroup.top_equiv_symm_apply_coe AddSubgroup.topEquiv_symm_apply_coe
 #align add_subgroup.top_equiv_apply AddSubgroup.topEquiv_apply
 
 /-- The trivial subgroup `{1}` of an group `G`. -/
@@ -1611,8 +1611,8 @@ def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K)
   map_mul' _g _h := rfl
 #align subgroup.subgroup_of_equiv_of_le Subgroup.subgroupOfEquivOfLe
 #align add_subgroup.add_subgroup_of_equiv_of_le AddSubgroup.addSubgroupOfEquivOfLe
-#align subgroup.subgroup_of_equiv_of_le_symm_apply_coe_coe Subgroup.subgroupOfEquivOfLe_symmApply_coe_coe
-#align add_subgroup.subgroup_of_equiv_of_le_symm_apply_coe_coe AddSubgroup.addSubgroupOfEquivOfLe_symmApply_coe_coe
+#align subgroup.subgroup_of_equiv_of_le_symm_apply_coe_coe Subgroup.subgroupOfEquivOfLe_symm_apply_coe_coe
+#align add_subgroup.subgroup_of_equiv_of_le_symm_apply_coe_coe AddSubgroup.addSubgroupOfEquivOfLe_symm_apply_coe_coe
 #align subgroup.subgroup_of_equiv_of_le_apply_coe Subgroup.subgroupOfEquivOfLe_apply_coe
 #align add_subgroup.subgroup_of_equiv_of_le_apply_coe AddSubgroup.addSubgroupOfEquivOfLe_apply_coe
 
chore: Restore most of the mono attribute (#2491)

Restore most of the mono attribute now that #1740 is merged.

I think I got all of the monos.

Diff
@@ -471,28 +471,18 @@ theorem toSubmonoid_eq {p q : Subgroup G} : p.toSubmonoid = q.toSubmonoid ↔ p
 #align subgroup.to_submonoid_eq Subgroup.toSubmonoid_eq
 #align add_subgroup.to_add_submonoid_eq AddSubgroup.toAddSubmonoid_eq
 
--- Porting note: Unknown attribute mono
---@[to_additive, mono]
-@[to_additive]
+@[to_additive (attr := mono)]
 theorem toSubmonoid_strictMono : StrictMono (toSubmonoid : Subgroup G → Submonoid G) := fun _ _ =>
   id
 #align subgroup.to_submonoid_strict_mono Subgroup.toSubmonoid_strictMono
 #align add_subgroup.to_add_submonoid_strict_mono AddSubgroup.toAddSubmonoid_strictMono
 
--- Porting note: Unknown attribute mono
--- attribute [mono] AddSubgroup.to_add_submonoid_strictMono
-
--- Porting note: Unknown attribute mono
---@[to_additive, mono]
-@[to_additive]
+@[to_additive (attr := mono)]
 theorem toSubmonoid_mono : Monotone (toSubmonoid : Subgroup G → Submonoid G) :=
   toSubmonoid_strictMono.monotone
 #align subgroup.to_submonoid_mono Subgroup.toSubmonoid_mono
 #align add_subgroup.to_add_submonoid_mono AddSubgroup.toAddSubmonoid_mono
 
--- Porting note: Unknown attribute mono
--- attribute [mono] AddSubgroup.to_add_submonoid_mono
-
 @[to_additive (attr := simp)]
 theorem toSubmonoid_le {p q : Subgroup G} : p.toSubmonoid ≤ q.toSubmonoid ↔ p ≤ q :=
   Iff.rfl
feat: simps uses fields of parent structures (#2042)
  • initialize_simps_projections now by default generates all projections of all parent structures, and doesn't generate the projections to those parent structures.
  • You can also rename a nested projection directly, without having to specify intermediate parent structures
  • Added the option to turn the default behavior off (done in e.g. TwoPointed)

Internal changes:

  • Move most declarations to the Simps namespace, and shorten their names
  • Restructure ParsedProjectionData to avoid the bug reported here (and to another bug where it seemed that the wrong data was inserted in ParsedProjectionData, but it was hard to minimize because of all the crashes). If we manage to fix the bug in that Zulip thread, I'll see if I can track down the other bug in commit 97454284

Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -439,9 +439,9 @@ def Simps.coe (S : Subgroup G) : Set G :=
 #align subgroup.simps.coe Subgroup.Simps.coe
 #align add_subgroup.simps.coe AddSubgroup.Simps.coe
 
-initialize_simps_projections Subgroup (toSubmonoid_toSubsemigroup_carrier → coe)
+initialize_simps_projections Subgroup (carrier → coe)
 
-initialize_simps_projections AddSubgroup (toAddSubmonoid_toAddSubsemigroup_carrier → coe)
+initialize_simps_projections AddSubgroup (carrier → coe)
 
 @[to_additive (attr := simp)]
 theorem coe_toSubmonoid (K : Subgroup G) : (K.toSubmonoid : Set G) = K :=
feat: add to_additive linter checking whether additive decl exists (#1881)
  • Force the user to specify whether the additive declaration already exists.
  • Will raise a linter error if the user specified it wrongly
  • Requested on Zulip
Diff
@@ -213,7 +213,7 @@ instance _root_.AddSubgroupClass.zsmul {M S} [SubNegMonoid M] [SetLike S M]
 #align add_subgroup_class.has_zsmul AddSubgroupClass.zsmul
 
 /-- A subgroup of a group inherits an integer power. -/
-@[to_additive]
+@[to_additive existing]
 instance zpow {M S} [DivInvMonoid M] [SetLike S M] [SubgroupClass S M] {H : S} : Pow H ℤ :=
   ⟨fun a n => ⟨a.1 ^ n, zpow_mem a.2 n⟩⟩
 #align subgroup_class.has_zpow SubgroupClass.zpow
@@ -702,7 +702,7 @@ instance _root_.AddSubgroup.nsmul {G} [AddGroup G] {H : AddSubgroup G} : SMul 
 #align add_subgroup.has_nsmul AddSubgroup.nsmul
 
 /-- A subgroup of a group inherits a natural power -/
-@[to_additive]
+@[to_additive existing]
 protected instance npow : Pow H ℕ :=
   ⟨fun a n => ⟨a ^ n, H.pow_mem a.2 n⟩⟩
 #align subgroup.has_npow Subgroup.npow
@@ -713,7 +713,7 @@ instance _root_.AddSubgroup.zsmul {G} [AddGroup G] {H : AddSubgroup G} : SMul 
 #align add_subgroup.has_zsmul AddSubgroup.zsmul
 
 /-- A subgroup of a group inherits an integer power -/
-@[to_additive]
+@[to_additive existing]
 instance zpow : Pow H ℤ :=
   ⟨fun a n => ⟨a ^ n, H.zpow_mem a.2 n⟩⟩
 #align subgroup.has_zpow Subgroup.zpow
refactor: rename HasSup/HasInf to Sup/Inf (#2475)

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

Diff
@@ -980,7 +980,7 @@ theorem bot_or_exists_ne_one (H : Subgroup G) : H = ⊥ ∨ ∃ x ∈ H, x ≠ (
 
 /-- The inf of two subgroups is their intersection. -/
 @[to_additive "The inf of two `add_subgroups`s is their intersection."]
-instance : HasInf (Subgroup G) :=
+instance : Inf (Subgroup G) :=
   ⟨fun H₁ H₂ =>
     { H₁.toSubmonoid ⊓ H₂.toSubmonoid with
       inv_mem' := fun ⟨hx, hx'⟩ => ⟨H₁.inv_mem hx, H₂.inv_mem hx'⟩ }⟩
feat: port FieldTheory.Subfield (#2395)

Needed to fix some mistranslation in another file but then it's smooth sailing.

Diff
@@ -192,14 +192,16 @@ namespace SubgroupClass
 
 /-- A subgroup of a group inherits an inverse. -/
 @[to_additive "An additive subgroup of a `add_group` inherits an inverse."]
-instance inv : Inv H :=
+instance inv {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
+  [SubgroupClass S G] {H : S} : Inv H :=
   ⟨fun a => ⟨a⁻¹, inv_mem a.2⟩⟩
 #align subgroup_class.has_inv SubgroupClass.inv
 #align add_subgroup_class.has_neg AddSubgroupClass.neg
 
 /-- A subgroup of a group inherits a division -/
 @[to_additive "An additive subgroup of an `add_group` inherits a subtraction."]
-instance div : Div H :=
+instance div {G : Type u_1} {S : Type u_2} [DivInvMonoid G] [SetLike S G]
+  [SubgroupClass S G] {H : S} : Div H :=
   ⟨fun a b => ⟨a / b, div_mem a.2 b.2⟩⟩
 #align subgroup_class.has_div SubgroupClass.div
 #align add_subgroup_class.has_sub AddSubgroupClass.sub
feat: require @[simps!] if simps runs in expensive mode (#1885)
  • This does not change the behavior of simps, just raises a linter error if you run simps in a more expensive mode without writing !.
  • Fixed some incorrect occurrences of to_additive, simps. Will do that systematically in future PR.
  • Fix port of OmegaCompletePartialOrder.ContinuousHom.ofMono a bit

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

Diff
@@ -507,7 +507,7 @@ end Subgroup
 section mul_add
 
 /-- Subgroups of a group `G` are isomorphic to additive subgroups of `Additive G`. -/
-@[simps]
+@[simps!]
 def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G) where
   toFun S := { Submonoid.toAddSubmonoid S.toSubmonoid with neg_mem' := S.inv_mem' }
   invFun S := { AddSubmonoid.toSubmonoid S.toAddSubmonoid with inv_mem' := S.neg_mem' }
@@ -525,7 +525,7 @@ abbrev AddSubgroup.toSubgroup' : AddSubgroup (Additive G) ≃o Subgroup G :=
 
 /-- Additive supgroups of an additive group `A` are isomorphic to subgroups of `Multiplicative A`.
 -/
-@[simps]
+@[simps!]
 def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A) where
   toFun S := { AddSubmonoid.toSubmonoid S.toAddSubmonoid with inv_mem' := S.neg_mem' }
   invFun S := { Submonoid.toAddSubmonoid S.toSubmonoid with neg_mem' := S.inv_mem' }
@@ -856,7 +856,7 @@ instance : Top (Subgroup G) :=
 /-- The top subgroup is isomorphic to the group.
 
 This is the group version of `Submonoid.topEquiv`. -/
-@[to_additive (attr := simps)
+@[to_additive (attr := simps!)
       "The top additive subgroup is isomorphic to the additive group.
 
       This is the additive group version of `AddSubmonoid.topEquiv`."]
@@ -3443,7 +3443,7 @@ instance (priority := 100) Subgroup.normal_subgroupOf {H N : Subgroup G} [N.Norm
 namespace MonoidHom
 
 /-- The `MonoidHom` from the preimage of a subgroup to itself. -/
-@[to_additive (attr := simps) "the `AddMonoidHom` from the preimage of an
+@[to_additive (attr := simps!) "the `AddMonoidHom` from the preimage of an
 additive subgroup to itself."]
 def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
   f.submonoidComap H'.toSubmonoid
@@ -3453,7 +3453,7 @@ def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
 #align monoid_hom.subgroup_comap_apply_coe MonoidHom.subgroupComap_apply_coe
 
 /-- The `MonoidHom` from a subgroup to its image. -/
-@[to_additive (attr := simps) "the `add_monoid_hom` from an additive subgroup to its image"]
+@[to_additive (attr := simps!) "the `add_monoid_hom` from an additive subgroup to its image"]
 def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
   f.submonoidMap H.toSubmonoid
 #align monoid_hom.subgroup_map MonoidHom.subgroupMap
chore: bump to nightly-2023-02-03 (#1999)
Diff
@@ -2779,7 +2779,6 @@ variable {M : Type _} [MulOneClass M]
 def ker (f : G →* M) : Subgroup G :=
   { MonoidHom.mker f with
     inv_mem' := fun {x} (hx : f x = 1) =>
-      show _ = _ from -- lean4#2073
       calc
         f x⁻¹ = f x * f x⁻¹ := by rw [hx, one_mul]
         _ = 1 := by rw [← map_mul, mul_inv_self, map_one] }
fix: use to_additive (attr := _) here and there (#2073)
Diff
@@ -856,17 +856,17 @@ instance : Top (Subgroup G) :=
 /-- The top subgroup is isomorphic to the group.
 
 This is the group version of `Submonoid.topEquiv`. -/
-@[to_additive
+@[to_additive (attr := simps)
       "The top additive subgroup is isomorphic to the additive group.
 
-      This is the additive group version of `AddSubmonoid.topEquiv`.",
-  simps]
+      This is the additive group version of `AddSubmonoid.topEquiv`."]
 def topEquiv : (⊤ : Subgroup G) ≃* G :=
   Submonoid.topEquiv
 #align subgroup.top_equiv Subgroup.topEquiv
 #align add_subgroup.top_equiv AddSubgroup.topEquiv
 #align subgroup.top_equiv_symm_apply_coe Subgroup.topEquiv_symmApply_coe
-#align subgroup.top_equiv_apply Subgroup.topEquiv_apply
+#align add_subgroup.top_equiv_symm_apply_coe AddSubgroup.topEquiv_symmApply_coe
+#align add_subgroup.top_equiv_apply AddSubgroup.topEquiv_apply
 
 /-- The trivial subgroup `{1}` of an group `G`. -/
 @[to_additive "The trivial `AddSubgroup` `{0}` of an `AddGroup` `G`."]
@@ -1609,9 +1609,9 @@ def subgroupOf (H K : Subgroup G) : Subgroup K :=
 #align add_subgroup.add_subgroup_of AddSubgroup.addSubgroupOf
 
 /-- If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`. -/
-@[to_additive "If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`.", simps]
-def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K) : H.subgroupOf K ≃* H
-    where
+@[to_additive (attr := simps) "If `H ≤ K`, then `H` as a subgroup of `K` is isomorphic to `H`."]
+def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K) :
+    H.subgroupOf K ≃* H where
   toFun g := ⟨g.1, g.2⟩
   invFun g := ⟨⟨g.1, h g.2⟩, g.2⟩
   left_inv _g := Subtype.ext (Subtype.ext rfl)
@@ -1620,7 +1620,9 @@ def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K)
 #align subgroup.subgroup_of_equiv_of_le Subgroup.subgroupOfEquivOfLe
 #align add_subgroup.add_subgroup_of_equiv_of_le AddSubgroup.addSubgroupOfEquivOfLe
 #align subgroup.subgroup_of_equiv_of_le_symm_apply_coe_coe Subgroup.subgroupOfEquivOfLe_symmApply_coe_coe
+#align add_subgroup.subgroup_of_equiv_of_le_symm_apply_coe_coe AddSubgroup.addSubgroupOfEquivOfLe_symmApply_coe_coe
 #align subgroup.subgroup_of_equiv_of_le_apply_coe Subgroup.subgroupOfEquivOfLe_apply_coe
+#align add_subgroup.subgroup_of_equiv_of_le_apply_coe AddSubgroup.addSubgroupOfEquivOfLe_apply_coe
 
 @[to_additive (attr := simp)]
 theorem comap_subtype (H K : Subgroup G) : H.comap K.subtype = H.subgroupOf K :=
chore: bump lean 01-29 (#1927)
Diff
@@ -2777,6 +2777,7 @@ variable {M : Type _} [MulOneClass M]
 def ker (f : G →* M) : Subgroup G :=
   { MonoidHom.mker f with
     inv_mem' := fun {x} (hx : f x = 1) =>
+      show _ = _ from -- lean4#2073
       calc
         f x⁻¹ = f x * f x⁻¹ := by rw [hx, one_mul]
         _ = 1 := by rw [← map_mul, mul_inv_self, map_one] }
chore: add missing #align statements (#1902)

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

  • take all mathlib 3 names, remove _ and make all uppercase letters into lowercase
  • take all mathlib 4 names, remove _ and make all uppercase letters into lowercase
  • look for matches, and create pairs (original_lean3_name, OriginalLean4Name)
  • for pairs that do not have an align statement:
    • use Lean 4 to lookup the file + position of the Lean 4 name
    • add an #align statement just before the next empty line
  • manually fix some tiny mistakes (e.g., empty lines in proofs might cause the #align statement to have been inserted too early)
Diff
@@ -378,9 +378,11 @@ attribute [to_additive] Subgroup
 
 /-- Reinterpret a `Subgroup` as a `Submonoid`. -/
 add_decl_doc Subgroup.toSubmonoid
+#align subgroup.to_submonoid Subgroup.toSubmonoid
 
 /-- Reinterpret an `AddSubgroup` as an `AddSubmonoid`. -/
 add_decl_doc AddSubgroup.toAddSubmonoid
+#align add_subgroup.to_add_submonoid AddSubgroup.toAddSubmonoid
 
 namespace Subgroup
 
@@ -513,6 +515,8 @@ def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G) where
   right_inv x := by cases x; rfl
   map_rel_iff' := Iff.rfl
 #align subgroup.to_add_subgroup Subgroup.toAddSubgroup
+#align subgroup.to_add_subgroup_symm_apply_coe Subgroup.toAddSubgroup_symmApply_coe
+#align subgroup.to_add_subgroup_apply_coe Subgroup.toAddSubgroup_apply_coe
 
 /-- Additive subgroup of an additive group `Additive G` are isomorphic to subgroup of `G`. -/
 abbrev AddSubgroup.toSubgroup' : AddSubgroup (Additive G) ≃o Subgroup G :=
@@ -529,6 +533,8 @@ def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A) wher
   right_inv x := by cases x; rfl
   map_rel_iff' := Iff.rfl
 #align add_subgroup.to_subgroup AddSubgroup.toSubgroup
+#align add_subgroup.to_subgroup_apply_coe AddSubgroup.toSubgroup_apply_coe
+#align add_subgroup.to_subgroup_symm_apply_coe AddSubgroup.toSubgroup_symmApply_coe
 
 /-- Subgroups of an additive group `Multiplicative A` are isomorphic to additive subgroups of `A`.
 -/
@@ -859,6 +865,8 @@ def topEquiv : (⊤ : Subgroup G) ≃* G :=
   Submonoid.topEquiv
 #align subgroup.top_equiv Subgroup.topEquiv
 #align add_subgroup.top_equiv AddSubgroup.topEquiv
+#align subgroup.top_equiv_symm_apply_coe Subgroup.topEquiv_symmApply_coe
+#align subgroup.top_equiv_apply Subgroup.topEquiv_apply
 
 /-- The trivial subgroup `{1}` of an group `G`. -/
 @[to_additive "The trivial `AddSubgroup` `{0}` of an `AddGroup` `G`."]
@@ -1611,6 +1619,8 @@ def subgroupOfEquivOfLe {G : Type _} [Group G] {H K : Subgroup G} (h : H ≤ K)
   map_mul' _g _h := rfl
 #align subgroup.subgroup_of_equiv_of_le Subgroup.subgroupOfEquivOfLe
 #align add_subgroup.add_subgroup_of_equiv_of_le AddSubgroup.addSubgroupOfEquivOfLe
+#align subgroup.subgroup_of_equiv_of_le_symm_apply_coe_coe Subgroup.subgroupOfEquivOfLe_symmApply_coe_coe
+#align subgroup.subgroup_of_equiv_of_le_apply_coe Subgroup.subgroupOfEquivOfLe_apply_coe
 
 @[to_additive (attr := simp)]
 theorem comap_subtype (H K : Subgroup G) : H.comap K.subtype = H.subgroupOf K :=
@@ -3437,6 +3447,8 @@ def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' :=
   f.submonoidComap H'.toSubmonoid
 #align monoid_hom.subgroup_comap MonoidHom.subgroupComap
 #align add_monoid_hom.add_subgroup_comap AddMonoidHom.addSubgroupComap
+#align add_monoid_hom.add_subgroup_comap_apply_coe AddMonoidHom.addSubgroupComap_apply_coe
+#align monoid_hom.subgroup_comap_apply_coe MonoidHom.subgroupComap_apply_coe
 
 /-- The `MonoidHom` from a subgroup to its image. -/
 @[to_additive (attr := simps) "the `add_monoid_hom` from an additive subgroup to its image"]
@@ -3444,6 +3456,8 @@ def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f :=
   f.submonoidMap H.toSubmonoid
 #align monoid_hom.subgroup_map MonoidHom.subgroupMap
 #align add_monoid_hom.add_subgroup_map AddMonoidHom.addSubgroupMap
+#align add_monoid_hom.add_subgroup_map_apply_coe AddMonoidHom.addSubgroupMap_apply_coe
+#align monoid_hom.subgroup_map_apply_coe MonoidHom.subgroupMap_apply_coe
 
 @[to_additive]
 theorem subgroupMap_surjective (f : G →* G') (H : Subgroup G) :
feat: port GroupTheory.Subgroup.Basic (#1797)

Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Lukas Miaskiwskyi <lukas.mias@gmail.com> Co-authored-by: qawbecrdtey <qawbecrdtey@naver.com> Co-authored-by: Vierkantor <vierkantor@vierkantor.com> Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>

Dependencies 4 + 201

202 files ported (98.1%)
87118 lines ported (98.8%)
Show graph

The unported dependencies are